
离线 TA的专栏
- 打卡等级:热心大叔
- 打卡总天数:205
- 打卡月天数:0
- 打卡总奖励:3134
- 最近打卡:2023-08-27 08:03:57
|
一 domain层介绍说明
- domain层专注于数据库数据领域开发,我们把数据库相关操作全部写在domain层。
- model层:数据表字段定义与开发
- repository层:数据库数据CURD操作
- service层:数据库相关业务操作
- 对于复杂的业务操作,这样可以使业务逻辑更加清晰,有利于后期开发与维护。
二 model层开发
- 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)
- }
复制代码 最后
至此,go-micro微服务domain层开发工作就正式完成,接下来就开始consul配置、注册中心的代码编写了,更多关于go-micro微服务domain层的资料请关注晓枫资讯其它相关文章!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:  进行删除处理。
4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
|