Bladeren bron

feat(app): 新增学校场地预约功能

- 创建订单接口:新增 createOrderPlaceSchool 方法,用于创建学校场地预约订单
- 订单实体修改:将 payType 和 orderStatus 字段类型从 String 改为 int
- 新增支付时间字段:在 AppOrder 实体中添加 payTime 字段
-优化场地查询 SQL:在 AppSiteMapper.xml 中优化场地查询条件- 订单服务扩展:在 OrderServiceImpl 中实现 createOrderPlaceSchool 方法,并添加通用订单创建逻辑
- 新增订单响应对象:在 OrderVO 中添加 createOrderPlaceSchool内部类,用于返回订单创建结果
SheepHy 1 week geleden
bovenliggende
commit
b8e9da8cd7

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

@@ -11,10 +11,10 @@ public interface IOrderService {
      * @Author SheepHy
      * @Description 学校场地预约-创建
      * @Date 10:10 2025/7/14
-     * @Param
-     * @return
+     * @Param rulesId 时间段ID
+     * @return OrderVO.createOrderPlaceSchool
      **/
-//    String createOrderPlaceSchool(String name);
+    OrderVO.createOrderPlaceSchool createOrderPlaceSchool(String rulesId);
 
     /**
      * @Author SheepHy

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

@@ -10,10 +10,7 @@ import org.jeecg.modules.system.app.entity.AppCourses;
 import org.jeecg.modules.system.app.entity.AppOrder;
 import org.jeecg.modules.system.app.entity.AppSitePlace;
 import org.jeecg.modules.system.app.entity.AppSitePriceRules;
-import org.jeecg.modules.system.app.mapper.AppCoursesMapper;
-import org.jeecg.modules.system.app.mapper.AppOrderMapper;
-import org.jeecg.modules.system.app.mapper.AppSitePlaceMapper;
-import org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper;
+import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
 import org.springframework.stereotype.Service;
@@ -38,6 +35,16 @@ public class OrderServiceImpl implements IOrderService {
     private AppOrderMapper appOrderMapper;
     @Resource
     private SysDepartMapper sysDepartMapper;
+    @Resource
+    private AppOrderProductMapper appOrderProductMapper;
+    @Resource
+    private AppOrderUserMapper appOrderUserMapper;
+
+    @Override
+    public OrderVO.createOrderPlaceSchool createOrderPlaceSchool(String rulesId) {
+
+        return null;
+    }
 
     @Override
     public boolean checkCourseLimitNum(String courseId, int limitNum) {
@@ -135,4 +142,37 @@ public class OrderServiceImpl implements IOrderService {
         }
         return success;
     }
+
+    /**
+     * @Author SheepHy
+     * @Description 根据不同的类型生成订单及订单明细
+     * @Date 15:09 2025/7/15
+     * @Param id type userId
+     * @return
+     **/
+    private String createOrder(List<String> id, String type, String userId) {
+        //订单类型;0场地/1赛事/2课程
+        AppOrder appOrder = new AppOrder();
+        switch(type){
+            case "0":
+                AppSitePriceRules appSitePriceRules = appSitePriceRulesMapper.selectById(id.get(0));
+                if(appSitePriceRules.getType() == 0){
+                    appOrder.setOrderStatus(0)
+                            .setType(0)
+                            .setProductIds("")
+                            .setUserId(userId)
+                            .setStatus(0)
+                            .setDelFlag(0)
+                            .setCreateTime(new Date())
+                            .setUpdateTime(new Date());
+                }
+                break;
+            case "1":
+                break;
+            case "2":
+                break;
+        }
+        appOrderMapper.insert(appOrder);
+        return "";
+    }
 }

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

@@ -108,4 +108,47 @@ public class OrderVO {
         @Schema(description = "结束时间")
         private Date endTime;
     }
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="学校场地预约-创建订单")
+    public static class createOrderPlaceSchool{
+        @Schema(description = "订单ID")
+        private String id;
+        /** 预订信息**/
+        @Schema(description = "订单状态")
+        private String orderStatus;
+        @Schema(description = "场地名称")
+        private String placeName;
+        @Schema(description = "时间段")
+        private String timeSlot;
+        @Schema(description = "日期")
+        private Date date;
+        @Schema(description = "用户名称")
+        private String userName;
+        @Schema(description = "地址")
+        private String address;
+        @Schema(description ="经度")
+        private BigDecimal longitude;
+        @Schema(description ="纬度")
+        private BigDecimal latitude;
+        @Schema(description = "到期时间")
+        private Date expireTime;
+        @Schema(description = "券号")
+        private String couponCode;
+        @Schema(description = "使用须知")
+        private String reminder;
+        /** 订单信息**/
+        @Schema(description = "订单编号")
+        private String orderCode;
+        @Schema(description = "手机号")
+        private String mobile;
+        @Schema(description = "实际付款")
+        private BigDecimal price;
+        @Schema(description = "下单时间")
+        private Date createTime;
+        @Schema(description = "支付时间")
+        private Date payTime;
+    }
+
 }

+ 6 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppOrder.java

@@ -80,11 +80,11 @@ public class AppOrder implements Serializable {
 	/**支付类型;0 wx 1zfb 2yl*/
 	@Excel(name = "支付类型;0 wx 1zfb 2yl", width = 15)
     @Schema(description = "支付类型;0 wx 1zfb 2yl")
-    private String payType;
+    private int payType;
 	/**订单状态*/
 	@Excel(name = "订单状态", width = 15)
     @Schema(description = "订单状态0初始 1、支付中 2、待使用 3、已使用 4、待评价 5、退款中 6、已退款")
-    private String orderStatus;
+    private int orderStatus;
 	/**二维码券号*/
 	@Excel(name = "二维码券号", width = 15)
     @Schema(description = "二维码券号")
@@ -109,6 +109,10 @@ public class AppOrder implements Serializable {
     @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 payTime;
 	/**更新人;更新人*/
     @Schema(description = "更新人;更新人")
     private String updateBy;

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

@@ -16,6 +16,7 @@
         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
+        WHERE 1 = 1
         <if test="venueType != null and venueType == '0-1'">
             ORDER BY b.good_rate DESC
         </if>