前期文章
文章标题 | 地址 |
---|---|
苍穹外卖Day01——总结1 | https://lushimeng.blog.csdn.net/article/details/135466359 |
苍穹外卖Day01——解决总结1中存在的问题 | https://lushimeng.blog.csdn.net/article/details/135473412 |
苍穹外卖Day02——总结2 | https://lushimeng.blog.csdn.net/article/details/135484126 |
苍穹外卖Day02——解决总结2中存在的问题 | https://lushimeng.blog.csdn.net/article/details/136242268 |
苍穹外卖Day03——总结3 | https://blog.csdn.net/qq_43751200/article/details/136378883 |
苍穹外卖Day03——解决总结3中存在的问题 | https://blog.csdn.net/qq_43751200/article/details/136380179 |
Redis与店铺营业设置
- 1. Redis入门教程
- 2. 在Java中操作Redis
- 3. 店铺营业状态设置
1. Redis入门教程
参见个人博客内容:Redis小白入门教程
2. 在Java中操作Redis
参见个人博客内容:Spring Data Redis使用方式
3. 店铺营业状态设置
进到苍穹外卖后台,显示餐厅的营业状态,营业状态分为营业中和打烊中,若当前餐厅处于营业状态,自动接收任何订单,客户可在小程序进行下单操作;若当前餐厅处于打烊状态,不接受任何订单,客户便无法在小程序进行下单操作。
虽然,可以通过一张表来存储营业状态数据,但整个表中只有一个字段,所以意义不大。
营业状态数据存储方式:基于Redis的字符串来进行存储
约定: 1表示营业 0表示打烊
从技术层面分析,其实管理端和用户端查询营业状态时,可通过一个接口去实现即可。因为营业状态是一致的。但是,本项目约定:
- 管理端发出的请求,统一使用/admin作为前缀。
- 用户端发出的请求,统一使用/user作为前缀。
因为访问路径不一致,故分为两个接口实现。
管理端接口设计:设置营业状态 和 获取营业状态
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.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.*;
@RestController("adminShopController")
@RequestMapping("/admin/shop")
@Api(tags = "店铺操作接口")
@Slf4j
public class ShopController {
public static final String KEY = "SHOP_STATUS";
@Autowired
private RedisTemplate redisTemplate;
/**
* 获取店铺的状态接口
* @return
*/
@GetMapping("/status")
@ApiOperation("获取店铺的状态接口")
public Result getShopStatus(){
ValueOperations valueOperations = redisTemplate.opsForValue();
Integer shop_status = (Integer) valueOperations.get(KEY);
return Result.success(shop_status);
}
/**
* 设置店铺状态接口
* @param status
* @return
*/
@PutMapping("/{status}")
@ApiOperation("设置店铺状态接口")
public Result setShopStatus(@PathVariable("status") Integer status){
log.info("获取店铺的状态: {}", status == 1 ? "营业中" : "打样中");
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set(KEY, status);
return Result.success();
}
}
用户端接口设计:获取营业状态
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.data.redis.core.ValueOperations;
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 getShopStatus(){
ValueOperations valueOperations = redisTemplate.opsForValue();
Integer shop_status = (Integer) valueOperations.get(KEY);
return Result.success(shop_status);
}
}