From 6f5e0af7b4e3c4e6d2bcd33bafb6649727e98b37 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 06 六月 2025 18:33:44 +0800
Subject: [PATCH] 开发商户端相关接口
---
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java | 267 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 252 insertions(+), 15 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 e0ef299..25a399c 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,26 +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.MerAgencyPageDto;
-import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto;
-import com.ruoyi.shop.domain.vo.MerAgencyPageVo;
-import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo;
-import com.ruoyi.shop.domain.vo.MgtShopInfoVo;
-import com.ruoyi.shop.service.shop.ShopService;
+import com.ruoyi.shop.domain.dto.*;
+import com.ruoyi.shop.domain.pojo.shop.ShopRelUser;
+import com.ruoyi.shop.domain.vo.*;
+import com.ruoyi.shop.service.shop.*;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
-import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
+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.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 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
@@ -35,19 +46,40 @@
public class MerShopController {
- @Autowired
+ @Resource
private ShopService shopService;
+ @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();
- MerHomeShopTotalVo merHomeShopTotalVo = shopService.getMerHomeTotal(userId);
+ merBaseDto.setUserId(userId);
+ MerHomeShopTotalVo merHomeShopTotalVo = shopService.getMerHomeTotal(merBaseDto);
return R.ok(merHomeShopTotalVo);
}
@@ -63,4 +95,209 @@
return R.ok(page.setRecords(merAgencyPageVoList));
}
+ @RequestMapping(value = "/listShopCertificate", method = RequestMethod.POST)
+ @ApiOperation(value = "获取商户证书列表")
+ public R<List<MerShopCertificateListVo>> listShopCertificate(@RequestBody MerShopCertificateListDto merShopCertificateListDto) {
+ Long userId = SecurityUtils.getUserId();
+ List<MerShopCertificateListVo> merShopCertificateListVoList = shopCertificateService.listShopCertificateVo(merShopCertificateListDto);
+ return R.ok(merShopCertificateListVoList);
+ }
+
+ @RequestMapping(value = "/editShopCertificate", method = RequestMethod.POST)
+ @ApiOperation(value = "编辑商户证书")
+ public R editShopCertificate(@RequestBody MerShopCertificateEditDto merShopCertificateEditDto) {
+ Long userId = SecurityUtils.getUserId();
+ shopCertificateService.editShopCertificate(merShopCertificateEditDto);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/deleteShopCertificate", method = RequestMethod.POST)
+ @ApiOperation(value = "删除商户证书")
+ public R deleteShopCertificate(@RequestBody MerBaseGetDto merBaseGetDto) {
+ Long userId = SecurityUtils.getUserId();
+ shopCertificateService.deleteShopCertificate(Long.valueOf(merBaseGetDto.getId()));
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/getShopStaffInfo", method = RequestMethod.POST)
+ @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();
+ Shop shop = shopService.getByShopId(shopId);
+ MerStaffInfoVo merStaffInfoVo = shopStaffService.getShopStaffInfo(userId, shop);
+ return R.ok(merStaffInfoVo);
+ }
+
+ @RequestMapping(value = "/editShopStaffInfo", method = RequestMethod.POST)
+ @ApiOperation(value = "修改员工信息")
+ public R editShopStaffInfo(@RequestBody MerEditUserDto merEditUserDto) {
+ Long userId = SecurityUtils.getUserId();
+ merEditUserDto.setUserId(userId);
+ if(merEditUserDto.getEditType()!=5){
+ shopStaffService.editShopStaffInfo(merEditUserDto);
+ }else{
+ Shop shop = shopService.getByShopId(merEditUserDto.getShopId());
+ String editValue = merEditUserDto.getEditValue();
+ String[] editArr = editValue.split("-");
+ shop.setBusinessStartTime(editArr[0]);
+ shop.setBusinessEndTime(editArr[1]);
+ shopService.saveOrUpdate(shop);
+ }
+ return R.ok();
+ }
+
+
+
+ @RequestMapping(value = "/pageMerShopSuggest", method = RequestMethod.POST)
+ @ApiOperation(value = "分页获取商户建议")
+ public R<Page<MerShopSuggestVo>> pageMerShopSuggest(@RequestBody MerPageDto merPageDto) {
+ Long userId = SecurityUtils.getUserId();
+ merPageDto.setUserId(userId);
+ Page<MerShopSuggestVo> page = new Page<>();
+ page.setSize(merPageDto.getPageSize());
+ page.setCurrent(merPageDto.getPageNum());
+ List<MerShopSuggestVo> merShopSuggestVoList = shopSuggestService.pageMerShopSuggest(page,merPageDto);
+ return R.ok(page.setRecords(merShopSuggestVoList));
+ }
+
+ @RequestMapping(value = "/suggest", method = RequestMethod.POST)
+ @ApiOperation(value = "建议")
+ public R suggest(@RequestBody MerShopSuggestDto merShopSuggestDto) {
+ Long userId = SecurityUtils.getUserId();
+ merShopSuggestDto.setUserId(userId);
+ shopSuggestService.suggest(merShopSuggestDto);
+ return R.ok();
+ }
+
+
+ @RequestMapping(value = "/listShopByShop", method = RequestMethod.POST)
+ @ApiOperation(value = "获取商户下属代理商")
+ 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) {
+ 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();
+ }
+
+ @RequestMapping(value = "/getMyShopList", method = RequestMethod.POST)
+ @ApiOperation(value = "获取当前账户可切换的门店列表【2.0】")
+ public R<List<Shop>> getMyShopList() {
+ Long userId = SecurityUtils.getUserId();
+ List<ShopRelUser> shopRelUser = shopRelUserService.getByUserId(userId);
+ List<Shop> collect = shopRelUser.stream().map(e -> {
+ Shop shop = shopService.getById(e.getShopId());
+ return shop;
+ }).collect(Collectors.toList());
+ return R.ok(collect);
+ }
+
+
}
--
Gitblit v1.7.1