From c5d38d650d2ac4101b1293a4f17346e7d5420076 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期五, 04 七月 2025 20:39:58 +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 | 226 +++++++++++++++++++++++++------------------------------- 1 files changed, 101 insertions(+), 125 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 e7580a4..7fe2a38 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 @@ -1,23 +1,35 @@ package com.ruoyi.shop.controller.miniapp; +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.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.member.domain.pojo.member.Member; -import com.ruoyi.member.service.member.MemberService; -import com.ruoyi.system.service.config.AdvertService; -import com.ruoyi.system.service.config.BannerService; -import com.ruoyi.system.service.config.QuickEntryService; -import com.ruoyi.system.service.goods.GoodsService; -import com.ruoyi.system.service.shop.ShopService; +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; +import com.ruoyi.system.api.domain.dto.AppBaseGetDto; +import com.ruoyi.system.api.domain.dto.AppointmentTimeDto; +import com.ruoyi.system.api.domain.dto.ShopAppointmentTimeDto; +import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.domain.poji.shop.ShopNonAppointableTime; +import com.ruoyi.system.api.domain.poji.shop.TShopAppointableTime; +import com.ruoyi.system.api.service.RemoteMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -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 lombok.extern.log4j.Log4j2; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -30,132 +42,96 @@ @Api(value = "小程序首页相关接口", tags = "小程序首页相关接口", description = "小程序首页相关接口") @RestController @RequestMapping("/app/home") +@Log4j2 public class AppHomeController { - - - @Autowired - private MemberService memberService; - - @Autowired - private BannerService bannerService; - - @Autowired - private QuickEntryService quickEntryService; - - @Autowired - private AdvertService advertService; - - @Autowired - private GoodsService goodsService; - - @Autowired + + @Resource + private RemoteMemberService memberService; + + @Resource private ShopService shopService; - + + @Resource + private ShopNonAppointableTimeService shopNonAppointableTimeService; + + @Resource + private ShopAppointableTimeService shopAppointableTimeService; + + @RequestMapping(value = "/getNearbyShop", method = RequestMethod.POST) @ApiOperation(value = "获取最近商户") public R<AppNearbyShopVo> getNearbyShop(@RequestBody AppNearbyShopDto appNearbyShopDto) { Long userId = SecurityUtils.getUserId(); + Member member = null; + if (userId != null) { + member = memberService.getMember(userId).getData(); + } + log.info("获取最近商户:userId=" + userId + "&appNearbyShopDto=" + JSON.toJSONString(appNearbyShopDto)); appNearbyShopDto.setUserId(userId); - AppNearbyShopVo appNearbyShopVo = memberService.getNearbyShop(appNearbyShopDto); + AppNearbyShopVo appNearbyShopVo = shopService.getNearbyShop(appNearbyShopDto,member); return R.ok(appNearbyShopVo); } - - @RequestMapping(value = "/getHomeBanner", method = RequestMethod.POST) - @ApiOperation(value = "获取首页banner") - public R<List<AppBannerVo>> getHomeBanner() { - List<AppBannerVo> appBannerVoList = bannerService.listHomeBannerVo(); - return R.ok(appBannerVoList); - } - - @RequestMapping(value = "/getQuickEntry", method = RequestMethod.POST) - @ApiOperation(value = "获取首页快速入口") - public R<List<AppQuickEntryVo>> getQuickEntry() { - List<AppQuickEntryVo> appQuickEntryVoList = quickEntryService.listQuickEntryVo(); - return R.ok(appQuickEntryVoList); - } - - @RequestMapping(value = "/getAdvert", method = RequestMethod.POST) - @ApiOperation(value = "获取首页广告") - public R<AppAdvertVo> getAdvert() { - AppAdvertVo appAdvertVo = advertService.getAdvertVo(); - return R.ok(appAdvertVo); - } - - @RequestMapping(value = "/pageRecommendGoods", method = RequestMethod.POST) - @ApiOperation(value = "推荐商品") - public R<Page<AppSimpleGoodsVo>> pageRecommendGoods(@RequestBody AppPageDto appPageDto) { - Long userId = SecurityUtils.getUserId(); - Long shopId = null; - if(userId!=null){ - Member member = memberService.getById(userId); - if(member!=null&&member.getRealtionShopId()!=null){ - shopId = member.getRealtionShopId(); - } - } - Page<AppSimpleGoodsVo> page = new Page<>(); - page.setSize(appPageDto.getPageSize()); - page.setCurrent(appPageDto.getPageNum()); - List<AppSimpleGoodsVo> appSimpleGoodsVoList = goodsService.pageRecommendGoods(page,shopId); - return R.ok(page.setRecords(appSimpleGoodsVoList)); - } - - @RequestMapping(value = "/pageShopGoods", method = RequestMethod.POST) - @ApiOperation(value = "商城商品") - public R<Page<AppSimpleGoodsVo>> pageShopGoods(@RequestBody AppShopGoodsPageDto appShopGoodsPageDto) { - Long userId = SecurityUtils.getUserId(); - if(userId!=null){ - Member member = memberService.getById(userId); - if(member!=null&&member.getRealtionShopId()!=null){ - appShopGoodsPageDto.setShopId(member.getRealtionShopId()); - } - } - Page<AppSimpleGoodsVo> page = new Page<>(); - page.setSize(appShopGoodsPageDto.getPageSize()); - page.setCurrent(appShopGoodsPageDto.getPageNum()); - List<AppSimpleGoodsVo> appSimpleGoodsVoList = goodsService.pageShopGoods(page,appShopGoodsPageDto); - return R.ok(page.setRecords(appSimpleGoodsVoList)); - } - - @RequestMapping(value = "/pageSearchGoods", method = RequestMethod.POST) - @ApiOperation(value = "搜索商品") - public R<Page<AppSimpleGoodsVo>> pageSearchGoods(@RequestBody AppSearchGoodsPageDto appSearchGoodsPageDto) { - Long userId = SecurityUtils.getUserId(); - if(userId!=null){ - Member member = memberService.getById(userId); - if(member!=null&&member.getRealtionShopId()!=null){ - appSearchGoodsPageDto.setShopId(member.getRealtionShopId()); - } - } - Page<AppSimpleGoodsVo> page = new Page<>(); - page.setSize(appSearchGoodsPageDto.getPageSize()); - page.setCurrent(appSearchGoodsPageDto.getPageNum()); - List<AppSimpleGoodsVo> appSimpleGoodsVoList = goodsService.pageSearchGoods(page,appSearchGoodsPageDto); - return R.ok(page.setRecords(appSimpleGoodsVoList)); - } - - @RequestMapping(value = "/pageSearchActivityGoods", method = RequestMethod.POST) - @ApiOperation(value = "搜索活动商品") - public R<Page<AppSimpleActivityGoodsVo>> pageSearchActivityGoods(@RequestBody AppSearchGoodsPageDto appSearchGoodsPageDto) { - Long userId = SecurityUtils.getUserId(); - if(userId!=null){ - Member member = memberService.getById(userId); - if(member!=null&&member.getRealtionShopId()!=null){ - appSearchGoodsPageDto.setShopId(member.getRealtionShopId()); - } - } - Page<AppSimpleActivityGoodsVo> page = new Page<>(); - page.setSize(appSearchGoodsPageDto.getPageSize()); - page.setCurrent(appSearchGoodsPageDto.getPageNum()); - List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsService.pageSearchActivityGoods(page,appSearchGoodsPageDto); - return R.ok(page.setRecords(appSimpleGoodsVoList)); - } - + + @RequestMapping(value = "/getShopInfo", method = RequestMethod.POST) @ApiOperation(value = "获取商户详情") public R<AppShopInfoVo> getShopInfo(@RequestBody AppBaseGetDto appBaseGetDto) { AppShopInfoVo appShopInfoVo = shopService.getAppShopInfo(Long.valueOf(appBaseGetDto.getId())); return R.ok(appShopInfoVo); } - - + + @RequestMapping(value = "/getShopAppointmentTime", method = RequestMethod.POST) + @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() + "' = DATE(non_appointable_start_time) order by non_appointable_start_time")); + return R.ok(list); + } + + @RequestMapping(value = "/appointmentTime", method = RequestMethod.POST) + @ApiOperation(value = "门店详情预约操作【2.0】") + public R appointmentTime(@RequestBody AppointmentTimeDto dto) { + TShopAppointableTime one = shopAppointableTimeService.getOne(new LambdaQueryWrapper<TShopAppointableTime>().eq(TShopAppointableTime::getShopId, dto.getShopId()) + .last(" and DATE_FORMAT(appointment_time, '%Y-%m-%d %H:%i:%s') = '" + dto.getTime() + "'")); + if (null != one) { + return R.fail("不能重复预约"); + } + Long userId = SecurityUtils.getUserId(); + one = new TShopAppointableTime(); + one.setId(IdUtils.fastSimpleUUID()); + one.setShopId(dto.getShopId()); + one.setAppointmentTime(LocalDateTime.parse(dto.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + 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(); + TShopAppointableTime 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