網站首頁 編程語言 正文
一 domain層介紹說明
- domain層專注于數據庫數據領域開發,我們把數據庫相關操作全部寫在domain層。
- model層:數據表字段定義與開發
- repository層:數據庫數據CURD操作
- service層:數據庫相關業務操作
- 對于復雜的業務操作,這樣可以使業務邏輯更加清晰,有利于后期開發與維護。
二 model層開發
- 在model目錄下新建 user.go 文件
package model import ( "time" ) type User struct { //主鍵 ID int64 `gorm:"primary_key;not_null;auto_increment" json:"id"` UserID int64 `gorm:"unique_index;not_null" json:"user_id"` UserName string `gorm:"unique_index;not_null" json:"username"` FirstName string `json:"first_name"` LastName string `json:"last_name"` PassWord string `json:"password"` Permission int64 `json:"permission"` CreateDate time.Time `json:"create_date"` UpdateDate time.Time `json:"update_date"` IsActive int64 `json:"is_active"` Email string `json:"email"` }
三 repository層開發
在repository層開發目錄下新建 user_repository.go 文件
repository層包含功能:
- InitTable 初始化數據表
- FindUserByName 根據用戶名稱查找用戶信息
- FindUserByID 根據用戶ID查找用戶信息
- CreateUser 創建用戶
- DeleteUserByID 根據用戶ID刪除用戶
- UpdateUser 更新用戶信息
- FindAll 查找所有用戶
- ResetPwd 重置密碼
- GetPermission 獲取權限
- UpdatePermission 修改權限
- EnableUser 啟用賬號
- DisableUser 禁用賬號
package repository import ( "account/domain/model" "github.com/jinzhu/gorm" ) type IUserRepository interface { // InitTable 初始化數據表 InitTable() error // FindUserByName 根據用戶名稱查找用戶信息 FindUserByName(string) (*model.User, error) // FindUserByID 根據用戶ID查找用戶信息 FindUserByID(int64) (*model.User, error) // CreateUser 創建用戶 CreateUser(*model.User) (int64, error) // DeleteUserByID 根據用戶ID刪除用戶 DeleteUserByID(int64) error // UpdateUser 更新用戶信息 UpdateUser(*model.User) error // FindAll 查找所有用戶 FindAll() ([]model.User, error) // ResetPwd 重置密碼 ResetPwd(int64, string) error // GetPermission 獲取權限 GetPermission(int64) (int64, error) // UpdatePermission 修改權限 UpdatePermission(int64, int64) error // EnableUser 啟用賬號 EnableUser(int64) error // DisableUser 禁用賬號 DisableUser(int64) error } // NewUserRepository 創建UserRepository func NewUserRepository(db *gorm.DB) IUserRepository { return &UserRepository{mysqlDb: db} } type UserRepository struct { mysqlDb *gorm.DB } // InitTable 初始化表 func (u *UserRepository) InitTable() error { return u.mysqlDb.CreateTable(&model.User{}).Error } // FindUserByName 根據用戶名稱查找用戶信息 func (u *UserRepository) FindUserByName(name string) (user *model.User, err error) { user = &model.User{} return user, u.mysqlDb.Where("username=?", name).Find(user).Error } // FindUserByID 根據用戶ID查找用戶信息 func (u *UserRepository) FindUserByID(userID int64) (user *model.User, err error) { user = &model.User{} return user, u.mysqlDb.Where("user_id=?", userID).Find(user).Error } // CreateUser 創建用戶 func (u *UserRepository) CreateUser(user *model.User) (userID int64, err error) { return user.ID, u.mysqlDb.Create(user).Error } // DeleteUserByID 刪除用戶 func (u *UserRepository) DeleteUserByID(userID int64) error { return u.mysqlDb.Where("user_id=?", userID).Delete(&model.User{}).Error } // UpdateUser 更新用戶信息 func (u *UserRepository) UpdateUser(user *model.User) error { return u.mysqlDb.Model(user).Update(&user).Error } // FindAll 查找所有用戶 func (u *UserRepository) FindAll() (userAll []model.User, err error) { return userAll, u.mysqlDb.Find(&userAll).Error } // ResetPwd 重置密碼 func (u *UserRepository) ResetPwd(userID int64, Pwd string) error { return u.mysqlDb.Where("user_id=?",userID).Update(model.User{PassWord:Pwd}).Error } // GetPermission 獲取權限 func (u *UserRepository) GetPermission(userID int64) (Permission int64, err error) { var user model.User return user.Permission,u.mysqlDb.Where("user_id=?",userID).Find(user).Error } // UpdatePermission 修改權限 func (u *UserRepository) UpdatePermission(userID int64, Permission int64) error { return u.mysqlDb.Where("user_id=?",userID).Update(model.User{Permission:Permission}).Error } // EnableUser 啟用賬號 func (u *UserRepository) EnableUser(userID int64) error { return u.mysqlDb.Where("user_id=?",userID).Update(&model.User{IsActive: 1}).Error } // DisableUser 禁用賬號 func (u *UserRepository) DisableUser(userID int64) error { return u.mysqlDb.Where("user_id=?",userID).Update(&model.User{IsActive: 0}).Error }
四 service層開發
在service目錄下新建 user_service.go 文件
service層包含功能:
- AddUser 插入用戶
- DeleteUser 刪除用戶
- UpdateUser 更新用戶
- FindUserByName 根據用戶名稱查找用戶信息
- FindUserByID 根據用戶ID查找用戶信息
- CheckPwd 比對賬號密碼是否正確
- ResetPwd 重置密碼
- GetPermission 獲取權限
- UpdatePermission 修改權限
- EnableUser 啟用賬號
- DisableUser 禁用賬號
package service import ( "account/domain/model" "account/domain/repository" "errors" "golang.org/x/crypto/bcrypt" ) type IUserService interface { // AddUser 插入用戶 AddUser(user *model.User) (int64, error) // DeleteUser 刪除用戶 DeleteUser(int64) error // UpdateUser 更新用戶 UpdateUser(user *model.User, isChangePwd bool) (err error) // FindUserByName 根據用戶名稱查找用戶信息 FindUserByName(string) (*model.User, error) // FindUserByID 根據用戶ID查找用戶信息 FindUserByID(int64) (*model.User, error) // CheckPwd 比對賬號密碼是否正確 CheckPwd(userName string, pwd string) (isOk bool, err error) // ResetPwd 重置密碼 ResetPwd(int64, string) error // GetPermission 獲取權限 GetPermission(int64) (int64, error) // UpdatePermission 修改權限 UpdatePermission(int64, int64) error // EnableUser 啟用賬號 EnableUser(int64) error // DisableUser 禁用賬號 DisableUser(int64) error } // NewUserService 創建實例 func NewUserService(userRepository repository.IUserRepository) IUserService { return &UserService{UserRepository: userRepository} } type UserService struct { UserRepository repository.IUserRepository } // GeneratePassword 加密用戶密碼 func GeneratePassword(userPassword string) ([]byte, error) { return bcrypt.GenerateFromPassword([]byte(userPassword), bcrypt.DefaultCost) } // ValidatePassword 驗證用戶密碼 func ValidatePassword(userPassword string, hashed string) (isOk bool, err error) { if err = bcrypt.CompareHashAndPassword([]byte(hashed), []byte(userPassword)); err != nil { return false, errors.New("密碼比對錯誤") } return true, nil } // AddUser 插入用戶 func (u *UserService) AddUser(user *model.User) (userID int64, err error) { pwdByte, err := GeneratePassword(user.PassWord) if err != nil { return user.ID, err } user.PassWord = string(pwdByte) return u.UserRepository.CreateUser(user) } // DeleteUser 刪除用戶 func (u *UserService) DeleteUser(userID int64) error { return u.UserRepository.DeleteUserByID(userID) } // UpdateUser 更新用戶 func (u *UserService) UpdateUser(user *model.User, isChangePwd bool) (err error) { if isChangePwd { pwdByte, err := GeneratePassword(user.PassWord) if err != nil { return nil } user.PassWord = string(pwdByte) } return u.UserRepository.UpdateUser(user) } // FindUserByName 根據用戶名稱查找用戶信息 func (u *UserService) FindUserByName(userName string) (user *model.User, err error) { return u.UserRepository.FindUserByName(userName) } // FindUserByID 根據用戶名稱查找用戶信息 func (u *UserService) FindUserByID(userId int64) (user *model.User, err error) { return u.UserRepository.FindUserByID(userId) } // CheckPwd 比對賬號密碼是否正確 func (u *UserService) CheckPwd(userName string, pwd string) (isOk bool, err error) { user, err := u.UserRepository.FindUserByName(userName) if err != nil { return false, err } return ValidatePassword(pwd, user.PassWord) } // ResetPwd 重置密碼 func (u *UserService) ResetPwd(userID int64, pwd string) error { return u.UserRepository.ResetPwd(userID,pwd) } // GetPermission 獲取權限 func (u *UserService) GetPermission(userID int64) (permission int64, err error) { return u.UserRepository.GetPermission(userID) } // UpdatePermission 修改權限 func (u *UserService) UpdatePermission(userID int64, permission int64) error { return u.UserRepository.UpdatePermission(userID,permission) } // EnableUser 啟用賬號 func (u *UserService) EnableUser(userID int64) error { return u.UserRepository.EnableUser(userID) } // DisableUser 禁用賬號 func (u *UserService) DisableUser(userID int64) error { return u.UserRepository.DisableUser(userID) }
最后
原文鏈接:https://juejin.cn/post/7186490052279533626
相關推薦
- 2023-03-23 python中decimal模塊的具體使用_python
- 2022-07-16 借助Redis的過期機制和分布式鎖實現定時任務
- 2023-03-01 Python中的getter與setter及deleter使用示例講解_python
- 2022-08-28 centos 單機版redis安裝與數據持久化
- 2022-07-09 kubernetes之資源限制
- 2022-06-11 適合初學者的C語言常量類型的講解_C 語言
- 2022-07-26 更新kali源并,安裝dirseach
- 2021-11-15 Linux網絡設置之基礎操作命令詳解_Linux
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支