Skip to content

店铺营业状态设置


思路分析

接口设计

(1)设置营业状态

(2)管理端查询营业状态

(3)用户端查询营业状态

注意事项

从技术层面分析,其实管理端和用户端查询营业状态时,可通过一个接口去实现即可

因为营业状态是一致的。但是,本项目约定

(1)管理端发出的请求,统一使用/admin 作为前缀

(2)用户端发出的请求,统一使用/user 作为前缀

因为访问路径不一致,故分为两个接口实现

设置营业状态

在 sky-server 模块中,创建 ShopController.java,根据接口定义创建 ShopController 的 setStatus 设置营业状态方法

java
package com.sky.controller.admin;

import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController("adminShopController")
@RequestMapping("/admin/shop")
@Api(tags = "店铺相关接口")
@Slf4j
public class ShopController {

    public static final String KEY = "SHOP_STATUS";

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 设置店铺的营业状态
     * @param status
     * @return
     */
    @PutMapping("/{status}")
    @ApiOperation("设置店铺的营业状态")
    public Result setStatus(@PathVariable Integer status){
        log.info("设置店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");
        redisTemplate.opsForValue().set(KEY,status);
        return Result.success();
    }
}

管理端查询营业状态

在 sky-server 模块中,创建 ShopController.java,根据接口定义创建 ShopController 的 getStatus 查询营业状态方法

java
/**
 * 获取店铺的营业状态
 * @return
 */
@GetMapping("/status")
@ApiOperation("获取店铺的营业状态")
public Result<Integer> getStatus(){
    Integer status = (Integer) redisTemplate.opsForValue().get(KEY);
    log.info("获取到店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");
    return Result.success(status);
}

用户端查询营业状态

创建 com.sky.controller.user 包,在该包下创建 ShopController.java,根据接口定义创建 ShopController 的 getStatus 查询营业状态方法

java
package com.sky.controller.user;

import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

@RestController("userShopController")
@RequestMapping("/user/shop")
@Api(tags = "店铺相关接口")
@Slf4j
public class ShopController {

    public static final String KEY = "SHOP_STATUS";

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 获取店铺的营业状态
     * @return
     */
    @GetMapping("/status")
    @ApiOperation("获取店铺的营业状态")
    public Result<Integer> getStatus(){
        Integer status = (Integer) redisTemplate.opsForValue().get(KEY);
        log.info("获取到店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");
        return Result.success(status);
    }
}