zoukankan      html  css  js  c++  java
  • 尚硅谷《谷粒商城项目总结》

    1、前言

    花了几天的时间把尚硅谷的视频项目看完了,跟着做了一遍,基本上没啥大的问题,有几个小问题也做了总结。

    技术方面除了 vue/nacos 没用过,其他的基本都用过,我们公司实际开发中用的也就是这一套东西。

    中间的不想看,可以直接点击目录,看总结,总结里有你针对此项目所有的总结及问题解决的说明

    1.1 技术栈

    springcloud

    统一配置中心:apollo 视频里用的 nacos

    统一注册中心:eureka  视频里用的 nacos

    远程调用:feign

    文件上传:OSS(oss 中有文件过期的设置,我们项目就因为这个出了问题。加了过期时间戳,然后到时间过期了,淡疼)

    vue,前端搞,我们只搞后端。

    1.2 统一异常处理

    1)、异常根据业务分类,然后不同的业务异常编码做到统一的规范.对后期也是很好的,方便维护、管理。

    2)、enum 维护,2 个字段 code msg,可以和 R 对象一起使用,异常时返回给前端显示

    3)、throw 异常,

    xxxException 自己实现的统一异常,构造参数传上 xxxErrorCode(接口),然后所有的错误 Enum 实现这个接口,执行下面的代码就可以了。

    throw new XXXException(XXXEnum.NOT_USER_ERROR);

    然后抛出异常后,这个类(@RestControllerAdvice)就会去统一处理,返回给前台相应的信息.

    我们的大概用法如下,只是一个大概思路。

    /**
     * @author : bamboo
     * @date : 2020-04-11
     */
    public interface MallErrorCode {
    
        /**
         * 获取错误码
         *
         * @return 错误码
         */
        String geCode();
    
        /**
         * 获取错误消息
         *
         * @return 错误消息
         */
        String getMsg();
    
    }
    
    
    /**
     * @author : bamboo
     * @date : 2020-04-11
     */
    public enum UserErrorEnum implements MallErrorCode {
    
        /**
         *
         */
        USER_NOT_FOUND("20001", "没有找到此用户"),
    
        USER_DELETED("200002", "用户已被删除");
    
        private final String code;
    
        private final String msg;
    
        UserErrorEnum(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        @Override
        public String geCode() {
            return this.code;
        }
    
        @Override
        public String getMsg() {
            return this.msg;
        }
    }
    
    
    /**
     * @author : bamboo
     * @date : 2020-04-11
     */
    public class MallException extends RuntimeException {
    
        private String code = "500";
    
        private String msg;
    
        public MallException(String code, String msg) {
            super(msg);
            this.code = code;
        }
    
        public MallException(MallErrorCode mallErrorCode) {
            this(mallErrorCode.geCode(), mallErrorCode.getMsg());
        }
    
        public static void createFailResult(MallErrorCode mallErrorCode) {
            throw new MallException(mallErrorCode);
        }
    
        public static void createFailResult(String code, String msg) {
            throw new MallException(code, msg);
        }
    
        public static void main(String[] args) {
            throw new MallException(UserErrorEnum.USER_DELETED);
        }
    }

    1.3 返回信息统一封装

    R 对象.这里是继承了 HashMap 对象

    我们是直接用了 Bean 对象,封装了如下的信息.

    {

      "success" : true/false,// 标识接口成功与否

      "code" : 100,//响应编码

      "msg" : "",//响应消息,错误的时候会用到

      "data" : {

      }//返回的数据

    }

    2、总结

    针对此项目也做了一些总结,过程中也遇到了一些小问题,不过都还好,能很快的定位。如果有想看的同学可以参考如下链接:

    https://gitee.com/yeyinzhu/gulimall-learn/tree/master

  • 相关阅读:
    IE hack [if IE]解决IE CSS 兼容问题
    jQuery重要插件、JS辅助工具
    几个jQueryUI框架
    推荐书籍
    Win7下用原生的ie6调试网页
    Code First :使用Entity. Framework编程(3)
    Code First :使用Entity. Framework编程(6)
    JSON数据格式转换
    Code First :使用Entity. Framework编程(5)
    Code First :使用Entity. Framework编程(4)
  • 原文地址:https://www.cnblogs.com/zhuzi91/p/12681980.html
Copyright © 2011-2022 走看看