From 1730a7fc4bb96f258d9dc8dec2e629cadbfdefc0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 18 六月 2025 13:47:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0

---
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java |   42 +++++++++++++++++++++++++++++++++++-------
 1 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java
index e73b8fb..c4ebd06 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java
@@ -3,11 +3,14 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.shop.domain.dto.AppNearbyShopDto;
+import com.ruoyi.shop.domain.dto.MyAppointmentListDto;
 import com.ruoyi.shop.domain.vo.AppNearbyShopVo;
 import com.ruoyi.shop.domain.vo.AppShopInfoVo;
+import com.ruoyi.shop.domain.vo.MyAppointmentListVo;
 import com.ruoyi.shop.service.shop.ShopAppointableTimeService;
 import com.ruoyi.shop.service.shop.ShopNonAppointableTimeService;
 import com.ruoyi.shop.service.shop.ShopService;
@@ -21,13 +24,11 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -82,7 +83,7 @@
     @ApiOperation(value = "获取商户不可预约时间段【2.0】")
     public R<List<ShopNonAppointableTime>> getShopAppointmentTime(@RequestBody ShopAppointmentTimeDto dto) {
         List<ShopNonAppointableTime> list = shopNonAppointableTimeService.list(new QueryWrapper<ShopNonAppointableTime>().eq("shop_id", dto.getId())
-                .last(" and '" + dto.getDate() + "' like CONCAT('%', non_appointable_start_time, '%') order by non_appointable_start_time"));
+                .last(" and '" + dto.getDate() + "' = DATE(non_appointable_start_time) order by non_appointable_start_time"));
         return R.ok(list);
     }
     
@@ -90,18 +91,45 @@
     @ApiOperation(value = "门店详情预约操作【2.0】")
     public R appointmentTime(@RequestBody AppointmentTimeDto dto) {
         ShopAppointableTime one = shopAppointableTimeService.getOne(new LambdaQueryWrapper<ShopAppointableTime>().eq(ShopAppointableTime::getShopId, dto.getShopId())
-                .eq(ShopAppointableTime::getAppointableTime, dto.getTime()));
+                .last(" and DATE_FORMAT(appointable_time, '%Y-%m-%d %H:%i') = '" + dto.getTime() + "'"));
         if (null != one) {
             return R.fail("不能重复预约");
         }
         Long userId = SecurityUtils.getUserId();
         one = new ShopAppointableTime();
         one.setShopId(dto.getShopId());
-        one.setAppointableTime(dto.getTime());
+        one.setAppointableTime(LocalDateTime.parse(dto.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
         one.setUserId(userId);
         one.setStatus(1);
         one.setCreateTime(LocalDateTime.now());
         shopAppointableTimeService.save(one);
         return R.ok();
     }
+    
+    @RequestMapping(value = "/getMyAppointmentList", method = RequestMethod.POST)
+    @ApiOperation(value = "获取我的预约列表【2.0】")
+    public R<Page<MyAppointmentListVo>> getMyAppointmentList(@RequestBody MyAppointmentListDto dto) {
+        Page<MyAppointmentListVo> page = new Page<>();
+        page.setSize(dto.getPageSize());
+        page.setCurrent(dto.getPageNum());
+        List<MyAppointmentListVo> myAppointmentListVos = shopAppointableTimeService.pageMyAppointmentList(page, dto);
+        return R.ok(page.setRecords(myAppointmentListVos));
+    }
+    
+    
+    @RequestMapping(value = "/cancelAppointmentTime/{id}", method = RequestMethod.POST)
+    @ApiOperation(value = "取消预约【2.0】")
+    public R cancelAppointmentTime(@PathVariable("id") String id) {
+        Long userId = SecurityUtils.getUserId();
+        ShopAppointableTime one = shopAppointableTimeService.getById(id);
+        if (null == one) {
+            return R.fail("预约不存在");
+        }
+        if (!one.getUserId().equals(userId)) {
+            return R.fail("不能取消别人的预约");
+        }
+        one.setStatus(0);
+        shopAppointableTimeService.updateById(one);
+        return R.ok();
+    }
 }

--
Gitblit v1.7.1