企业级开发项目"苍穹外卖"(二)

何平安 / 2023-09-11 / 原文

添加公共通用注解

因为接下来的许多接口需要用到create_time,update_time数据库添加语句等,这种会增加代码的重复性,这时这时直接添加一个注释然后添加到Mapper类里面。就是利用AOP进行公共段自动填充技术

 先在server模块下创建annotation.AutoFill注解类,里面编写:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoFill {
    OperationType value();
}

OperationType是一个枚举类,里面有UPDATE,INSERT

然后在在server里面创建aspect.AutoFillAspect类,里面编写:

@Aspect
@Component
@Slf4j
public class AutoFillAspect {
    @Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")
    public void autoFillPointCut(){}

    /*
    开始进行共享字段自动填充
     */
    @Before("autoFillPointCut()")
    public void autoFill(){
        log.info("开始进行共享字段自动填充...");
    }
}
execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)的意思就是切入点为com.sky.mapper下的所有类的所有方法并且有AutoFill注解的。Before就是一个输出日志。

菜品管理

添加菜品

先在Controller层里面添加一个通用接口类:CommonController,里面编写文件上传接口,将文件上传到阿里云OSS。

配置阿里OSS直接在yml里面编写nameid和key就行,会发现编写时有提示,因为在common模块里面已经添加了AliOSSProtites的配置属性注解:@ConfigurationProperties(prefix = "sky.alioss")

yml:注意':'后面有个空格

sky:
  jwt:
    # 设置jwt签名加密时使用的秘钥
    admin-secret-key: itcast
    # 设置jwt过期时间
    admin-ttl: 7200000
    # 设置前端传递过来的令牌名称
    admin-token-name: token
  alioss:
    access-key-id: ${sky.alioss.access-key-id}
    access-key-secret: ${sky.alioss.access-key-secret}
    bucket-name:  ${sky.alioss.bucket-name}
    endpoint: ${sky.alioss.endpoint}

 这里不直接写是为了规范,隐藏key等密码。真实数据在dev-yml里面编写,因为上边写了

spring:
profiles:
active: dev