成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go項目實戰--用戶信息管理和GORM的事務管理實戰

開發 前端
新增默認收貨地址,因為收貨地址有且只有一個默認地址,所有當新加的收貨地址是默認地址時,要確認之前有無默認地址,有則把原來的默認地址設置為非默認的。

本節我們進行用戶模塊中最后一個功能用例--用戶地址信息維護的開發,用戶信息維護這個用例展開后其實還有下面這些子個用例--每個子用例對應一個具體的功能接口。

本文大綱本文大綱

我們項目中這五個功能都已經實現,但是在文章里全展開說一遍篇幅就太長了,所以我們在教程中主要抓重點。

文章里我把新增、查看收貨地址列表和更新收貨地址這三個功能的實現過程詳細講一下,剩余的兩個功能:查看單個地址信息和刪除地址信息比較簡單,代碼中也有詳細的注釋,大家可以直接看項目的代碼,另外我會把這兩個功能的cURL放上來,方便大家在本地測試。

此外我還會把項目中常用的MySQL事務的形式和怎么用好GORM的事務功能做了講解,避免讓大家在開發項目時寫冤枉代碼。

新增收貨地址

收貨地址的設置相信大家平時使用淘寶、京東、拼多多的時候都設置過。它的整體流程不復雜,唯一有一點需要注意的是如果新加的收貨地址要設置成默認地址,像這張圖這樣。

圖片圖片

此時要確認之前有無默認地址,有則把原來的默認地址設置為非默認。

功能實現

因為我們還沒有為用戶收貨信息創建Model 類型,所以我們先創建 Model 在 dal/model 目錄新建 user_address.go 在其中創建 Model 。

// UserAddress 用戶收貨信息表
type UserAddress struct {
 ID            int64                 `gorm:"column:id;primary_key;AUTO_INCREMENT"`                 // 收貨信息ID
 UserId        int64                 `gorm:"column:user_id;NOT NULL"`                              // 用戶ID
 UserName      string                `gorm:"column:user_name;NOT NULL"`                            // 收貨人姓名
 UserPhone     string                `gorm:"column:user_phone;NOT NULL"`                           // 收貨人手機號
 Default       int                   `gorm:"column:default;default:0;NOT NULL"`                    // 是否為默認收貨信息 0-非默認 1-是默認
 ProvinceName  string                `gorm:"column:province_name;NOT NULL"`                        // 省
 CityName      string                `gorm:"column:city_name;NOT NULL"`                            // 城
 RegionName    string                `gorm:"column:region_name;NOT NULL"`                          // 區/縣
 DetailAddress string                `gorm:"column:detail_address;NOT NULL"`                       // 收件詳細地址(街道/樓宇/單元)
 IsDel         soft_delete.DeletedAt `gorm:"softDelete:flag"`                                      // 刪除狀態 0-未刪除 1-已刪除
 CreatedAt     time.Time             `gorm:"column:created_at;default:CURRENT_TIMESTAMP;NOT NULL"`// 添加時間
 UpdatedAt     time.Time             `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;NOT NULL"`// 修改時間
}

func (m *UserAddress) TableName() string {
return"user_address"
}

接下來我們先定義好請求數據對象和領域數據對象,明確后面服務方法該怎么操作數據。

在api/request/user.go 中定義請求對象。

type UserAddress struct {
 UserName      string `json:"user_name" binding:"required"`
 UserPhone     string `json:"user_phone" binding:"required"`
 Default       int    `json:"default" binding:"notallow=0 1"`
 ProvinceName  string `json:"province_name" binding:"required"`
 CityName      string `json:"city_name" binding:"required"`
 RegionName    string `json:"region_name" binding:"required"`
 DetailAddress string `json:"detail_address" binding:"required"`
}

開發功能時Controller 會把客戶端的請求數據綁定到請求對象上,同時會根據這里指定的驗證規則進行字段值的驗證。

在 logic/do/user.go 中定義領域對象。

type UserAddressInfo struct {
 ID            int64
 UserId        int64
 UserName      string
 UserPhone     string
 Default       int
 ProvinceName  string
 CityName      string
 RegionName    string
 DetailAddress string
 IsDel         int
 CreatedAt     time.Time
 UpdatedAt     time.Time
}

同理應用服務會把請求數據對象轉換成領域對象給到領域服務,讓它完成添加用戶收貨地址的核心邏輯。

新增用戶收貨地址功能有兩個主要的邏輯分支:

  • 新增非默認收貨地址
  • 新增默認收貨地址,因為收貨地址有且只有一個默認地址,所有當新加的收貨地址是默認地址時,要確認之前有無默認地址,有則把原來的默認地址設置為非默認的。

我們把這部分邏輯封裝在創建收貨地址的Dao方法中,主要是因為涉及更新多條記錄時要用到事務提交,我們在這里封裝好了,領域服務中的邏輯會更簡單,不用關心事務管理這些數據庫層面的事情

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2025-01-02 09:02:09

Go項目Token

2025-02-08 10:56:18

2025-02-21 08:00:00

事務管理SpringBootJava

2024-11-13 09:13:45

2025-02-10 09:03:29

2025-03-04 00:00:05

Go項目分類樹

2009-06-03 10:20:11

Hibernate事務管理配置

2023-10-08 08:28:10

Spring事務管理

2009-06-17 14:57:11

Spring事務管理

2009-06-30 16:57:42

Spring事務管理

2009-09-25 12:59:53

Hibernate事務

2022-08-04 08:46:16

單體架構微服務事務管理

2009-07-17 14:03:34

ibatis DAO事務管理

2009-06-08 17:56:00

SpringJDBC事務

2023-03-27 10:40:09

2009-09-29 09:44:52

Hibernate事務

2009-09-23 17:48:00

Hibernate事務

2014-08-25 09:12:47

Spring事務管理

2022-01-07 15:11:27

項目Go 框架

2009-06-17 14:43:47

Spring框架Spring事務管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日产国产成人免费图片 | 手机av免费在线 | 国产欧美一区二区三区日本久久久 | 亚洲一区二区三区免费观看 | 久久99国产精一区二区三区 | 国产精久久久久久久妇剪断 | 黄色在线免费观看 | 欧美久久一区二区三区 | 青青久在线视频 | 黄色网毛片 | 视频一区中文字幕 | 日韩成人中文字幕 | 91一区二区在线观看 | 视频一区二区三区四区五区 | 一色桃子av一区二区 | 午夜天堂精品久久久久 | 99久久久国产精品 | 国产一区影院 | 一区亚洲 | 日本免费视频在线观看 | 91在线免费视频 | 一区二区三区影院 | 99re热精品视频 | 黄在线免费观看 | 国产精品久久久久久久久久尿 | 一级黄色录像片子 | 免费精品 | 国产露脸对白88av | 亚洲一区二区视频 | 成人在线精品视频 | 欧美天堂一区 | 国产在线播 | 日韩国产高清在线观看 | 亚洲国产一区在线 | 国产精品a久久久久 | 91精品国产91久久久久久最新 | 日本不卡视频在线播放 | 成人av免费| 精品国产精品三级精品av网址 | 精品免费国产一区二区三区四区 | 国产97视频在线观看 |