尚硅谷《谷粒商城項目總結》


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM