From 890c290afef9faca8ddaf0fea6197c3daa472141 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 03 六月 2025 19:18:56 +0800 Subject: [PATCH] 开发商户端预约列表相关接口 --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 142 insertions(+), 25 deletions(-) diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java index 5bda83c..9b5aaf7 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java @@ -1,27 +1,37 @@ package com.ruoyi.shop.controller.business; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.*; import com.ruoyi.shop.domain.pojo.shop.ShopRelUser; -import com.ruoyi.shop.domain.vo.MerAgencyPageVo; -import com.ruoyi.shop.domain.vo.MerShopCertificateListVo; -import com.ruoyi.shop.domain.vo.MerShopSuggestVo; -import com.ruoyi.shop.domain.vo.MerchantBasicdataSettlementVo; +import com.ruoyi.shop.domain.vo.*; import com.ruoyi.shop.service.shop.*; -import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.dto.MerBaseDto; +import com.ruoyi.system.api.domain.dto.MerBaseGetDto; +import com.ruoyi.system.api.domain.dto.MerEditUserDto; +import com.ruoyi.system.api.domain.dto.MerPageDto; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopAppointableTime; +import com.ruoyi.system.api.domain.poji.shop.ShopNonAppointableTime; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MerStaffInfoVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.format.DateTimeFormatter; +import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author jqs34 @@ -41,23 +51,31 @@ @Resource private ShopCertificateService shopCertificateService; - + @Resource private ShopStaffService shopStaffService; - + @Resource private ShopRelUserService shopRelUserService; - + @Resource private ShopSuggestService shopSuggestService; - + + @Resource + private ShopNonAppointableTimeService shopNonAppointableTimeService; + + @Resource + private ShopAppointableTimeService shopAppointableTimeService; + + /** * 未完成实际统计 + * * @param merBaseDto * @return */ @RequestMapping(value = "/getMerHomeTotal", method = RequestMethod.POST) - @ApiOperation(value = "获取商户端商业统计") + @ApiOperation(value = "获取商户端商业统计【2.0】") public R<MerHomeShopTotalVo> getMerHomeTotal(@RequestBody MerBaseDto merBaseDto) { Long userId = SecurityUtils.getUserId(); merBaseDto.setUserId(userId); @@ -100,14 +118,16 @@ shopCertificateService.deleteShopCertificate(Long.valueOf(merBaseGetDto.getId())); return R.ok(); } - + @RequestMapping(value = "/getShopStaffInfo", method = RequestMethod.POST) - @ApiOperation(value = "获取员工信息") - public R<MerStaffInfoVo> getShopStaffInfo() { + @ApiOperation(value = "获取员工信息【2.0】") + @ApiImplicitParams({ + @ApiImplicitParam(value = "当前商户id", name = "shopId", required = true, dataType = "Long", paramType = "query") + }) + public R<MerStaffInfoVo> getShopStaffInfo(@RequestParam("shopId") Long shopId) { Long userId = SecurityUtils.getUserId(); - ShopRelUser shopRelUser = shopRelUserService.getByUserId(userId); - Shop shop = shopService.getByShopId(shopRelUser.getShopId()); - MerStaffInfoVo merStaffInfoVo = shopStaffService.getShopStaffInfo(userId,shop); + Shop shop = shopService.getByShopId(shopId); + MerStaffInfoVo merStaffInfoVo = shopStaffService.getShopStaffInfo(userId, shop); return R.ok(merStaffInfoVo); } @@ -151,22 +171,119 @@ shopSuggestService.suggest(merShopSuggestDto); return R.ok(); } - - - + + @RequestMapping(value = "/listShopByShop", method = RequestMethod.POST) @ApiOperation(value = "获取商户下属代理商") - public R<List<MgtSimpleShopVo>> listShopByShop(@RequestBody MerBaseDto merBaseDto) - { + public R<List<MgtSimpleShopVo>> listShopByShop(@RequestBody MerBaseDto merBaseDto) { List<MgtSimpleShopVo> mgtShopListSimpleVos = shopService.listShopByShop(merBaseDto.getShopId()); return R.ok(mgtShopListSimpleVos); } - - - + + @RequestMapping(value = "/getShopMerchantBasicDataSettlement", method = RequestMethod.POST) @ApiOperation(value = "获取提现记录(汇付天下)") - public R<List<MerchantBasicdataSettlementVo>> getMerchantBasicDataSettlement(@Validated @RequestBody MerchantBasicdataSettlementDto mgtShopShareRatioSetDto){ + public R<List<MerchantBasicdataSettlementVo>> getMerchantBasicDataSettlement(@Validated @RequestBody MerchantBasicdataSettlementDto mgtShopShareRatioSetDto) { return shopService.getMerchantBasicDataSettlement(mgtShopShareRatioSetDto); } + + @RequestMapping(value = "/getUserShopList", method = RequestMethod.POST) + @ApiOperation(value = "获取切换门店列表【2.0】") + public R<List<Shop>> getUserShopList() { + List<ShopRelUser> shopRelUsers = shopRelUserService.getByUserId(SecurityUtils.getUserId()); + shopRelUsers.sort(Comparator.comparing(ShopRelUser::getIsDefault)); + List<Shop> collect = shopRelUsers.stream().map(shopRelUser -> { + Shop shop = shopService.getById(shopRelUser.getShopId()); + return shop; + }).collect(Collectors.toList()); + return R.ok(collect); + } + + + @RequestMapping(value = "/getShopReservationConfig/{shopId}", method = RequestMethod.POST) + @ApiOperation(value = "获取门店预约管理配置【2.0】") + public R<ShopReservationConfigVo> getShopReservationConfig(@PathVariable("shopId") Long shopId) { + Shop shop = shopService.getById(shopId); + Integer subscribe = shop.getSubscribe(); + ShopReservationConfigVo vo = new ShopReservationConfigVo(); + vo.setSubscribe(subscribe); + List<ShopNonAppointableTime> list = shopNonAppointableTimeService.list(new LambdaQueryWrapper<ShopNonAppointableTime>().eq(ShopNonAppointableTime::getShopId, shopId) + .orderByAsc(ShopNonAppointableTime::getNonAppointableStartTime)); + vo.setUnsubscribeTime(list.stream().map(shopNonAppointableTime -> { + Map<String, String> map = new HashMap<>(); + String time = shopNonAppointableTime.getNonAppointableStartTime().format(DateTimeFormatter.ofPattern("MM月dd日 HH:mm")) + "-" + shopNonAppointableTime.getNonAppointableEndTime().format(DateTimeFormatter.ofPattern("HH:mm")); + map.put("time", time); + map.put("id", shopNonAppointableTime.getId()); + return map; + }).collect(Collectors.toList())); + return R.ok(vo); + } + + @RequestMapping(value = "/addShopNonAppointableTime", method = RequestMethod.POST) + @ApiOperation(value = "门店添加不可预约时间段【2.0】") + public R addShopNonAppointableTime(@RequestBody ShopNonAppointableTimeDto dto) { + ShopNonAppointableTime shopNonAppointableTime = new ShopNonAppointableTime(); + shopNonAppointableTime.setShopId(dto.getShopId()); + shopNonAppointableTime.setNonAppointableStartTime(dto.getNonAppointableStartTime()); + shopNonAppointableTime.setNonAppointableEndTime(dto.getNonAppointableEndTime()); + shopNonAppointableTimeService.save(shopNonAppointableTime); + return R.ok(); + } + + + @RequestMapping(value = "/switchAppointment/{shopId}/{subscribe}", method = RequestMethod.POST) + @ApiOperation(value = "开关门店预约配置【2.0】") + @ApiImplicitParams({ + @ApiImplicitParam(value = "门店id", name = "shopId", required = true, dataType = "Long", paramType = "path"), + @ApiImplicitParam(value = "预约开关(0=关,1=开)", name = "subscribe", required = true, dataType = "Integer", paramType = "path") + }) + public R switchAppointment(@PathVariable("shopId") Long shopId, @PathVariable("subscribe") Integer subscribe) { + Shop shop = shopService.getById(shopId); + shop.setSubscribe(subscribe); + shopService.updateById(shop); + return R.ok(); + } + + @RequestMapping(value = "/getShopAppointableTimeList", method = RequestMethod.POST) + @ApiOperation(value = "商户获取预约列表【2.0】") + public R<Page<ShopAppointableTimeListVo>> getShopAppointableTimeList(@RequestBody ShopAppointableTimeListDto dto) { + Page<ShopAppointableTimeListVo> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + List<ShopAppointableTimeListVo> shopAppointableTimeList = shopAppointableTimeService.getShopAppointableTimeList(page, dto); + return R.ok(page.setRecords(shopAppointableTimeList)); + } + + + @RequestMapping(value = "/confirmReservation/{id}", method = RequestMethod.POST) + @ApiOperation(value = "商户确认预约【2.0】") + public R confirmReservation(@PathVariable("id") String id) { + ShopAppointableTime shopAppointableTime = shopAppointableTimeService.getById(id); + if (null == shopAppointableTime) { + return R.fail("预约不存在"); + } + if (1 != shopAppointableTime.getStatus()) { + return R.fail("确认预约失败"); + } + shopAppointableTime.setStatus(2); + shopAppointableTimeService.updateById(shopAppointableTime); + return R.ok(); + } + + + @RequestMapping(value = "/cancelReservation", method = RequestMethod.POST) + @ApiOperation(value = "商户取消预约【2.0】") + public R cancelReservation(@RequestBody CancelReservationDto dto) { + ShopAppointableTime shopAppointableTime = shopAppointableTimeService.getById(dto.getId()); + if (null == shopAppointableTime) { + return R.fail("预约不存在"); + } + if (0 == shopAppointableTime.getStatus()) { + return R.fail("不能重复操作"); + } + shopAppointableTime.setStatus(0); + shopAppointableTime.setReason(dto.getReason()); + shopAppointableTimeService.updateById(shopAppointableTime); + return R.ok(); + } } -- Gitblit v1.7.1