狂刷项目

001 瑞吉外卖

  1. 2023年6月23日 day3配置CategoryController时候,导入资料中的实体类会莫名其妙报错,查看控制到得知, 有一个is_deleted的属性在数据表中不存在,而按照视频的进度来说,应该先注释掉这个属性
  2. 2023年6月24日 还是CategoryController,到删除阶段,一个很经典的问题,导入的资料包中的前端删除按钮传递的删除id是ids,而视频中这个阶段用的是id
    image
    同时需要将代码中Long id改为Long ids 下面也是
@DeleteMapping
    public R<String> delete(Long ids) {
        log.info("删除分类 id为 {}", ids);

        categoryService.removeById(ids);
        //categoryService.remove(id);
        return R.success("删除成功!");
    }

image
service中

void remove(Long id);

实现类

    /**
     * 根据id删除 删除前判断是否管理其他菜品或套餐
     *
     * @param id
     */

    @Override
    public void remove(Long id) {
        // 查询当前分类是否关联菜品 如果有 抛出异常
        LambdaQueryWrapper<Dish> dishLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 添加查询条件 根据分类的id 进行查询
        dishLambdaQueryWrapper.eq(Dish::getCategoryId, id);
        int count1 = dishService.count(dishLambdaQueryWrapper);
        if (count1 > 0) {
            //关联菜品 抛出异常
            throw new CustomException("关联了菜品,不能删除");
        }

        // 查询当前分类是否关联套餐 如果有 抛出异常
        LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 添加查询条件 根据分类的id 进行查询
        setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId, id);
        int count2 = setmealService.count(setmealLambdaQueryWrapper);
        if (count2 > 0) {
            //关联套餐 抛出异常
            throw new CustomException("关联套餐,不能删除");
        }
        // 没有关联则正常删除
        super.removeById(id);
    }

002 三更Blog

  1. maven依赖管理器
    加入最开始你没有某个依赖,你在父类中复制粘贴了依赖,并且加了dependencyManagement,如果本地仓库不存在该依赖,这个依赖会被过滤掉,只有手动的先取消dependencyManagement后,刷新maven导入依赖,然后再加上dependencyManagement才能正常管理依赖
    • 最上面的父类dependencyManagement

2023年7月25日

  1. BeanCopyUtils抄错
// 错误代码
public class BeanCopyUtils {
    public BeanCopyUtils() {
    }

    //通过字节码反射的方式创建目标对象
    public static <V> V copyBean(Object source, Class<V> clazz) {
        //    创建目标对象  通过反射
        V result = null;
        try {
            result = clazz.newInstance();
            //    实现属性的拷贝
            BeanUtils.copyProperties(source, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    // 补充拷贝的遍历等操作
    // 传进来字节码
    public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
        return list.stream()
                .map(o -> copyBean(0, clazz))
                .collect(Collectors.toList());

    }
	}
错误原因0    写的时候以为从  0  开始    然后就错了    从serviceImpl一点点找上来的

2023年7月27日 03点58分

  1. 我是真真真服了...
    Q:问题: 明明成功登录 但是死活访问不了指定页面 甚至token不知道发生了什么,登录了跟没登陆一样,甚至不如没登陆
    R:倒腾了将近一小时,结果还是老毛病,写错内容了!!!!
    A:在登录阶段设置存入redis的token内容时, 格式为
    //后面忘了写冒号...
    // 这里是将指定信息按照指定格式存入redis, 存储为loginUser
     redisCache.setCacheObject("bloglogin:" + userId, loginUser);
    
    设置的挺好的,但是在jwt中拿来用的时候格式写成了
    redisCache.getCacheObject("bloglogin" + userId);
    
    有一说一 我没捋清楚security的流程,总感觉是在处理token时候哪里有问题,毕竟登录上来,前端正常跳转,但是到业务部分就提示未登录,想了一会,本打算看看程序流, 翻了一下发现是redis取值这里有问题...花了半个多小时,满费劲的...

呆问题2023年7月30日10点41分

image

加了
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

结果变成了!
image
实际上还要在启动类中添加

	@EnableConfigurationProperties

2023年8月1日

浏览量使用redis定时持久化
原因: 在每次写入数据库会有行锁, 来回访问可能不会及时更新, 所以用redis记录浏览量并定时写入数据库中, 因为这个数据不那么重要,所以不考虑redis宕机的情况
posted @ 2023-06-24 14:43  rainsc  阅读(19)  评论(0编辑  收藏  举报