Browse Source

添加uuid

huangyan 5 months ago
parent
commit
47bd5c1e61
13 changed files with 390 additions and 282 deletions
  1. 10 0
      Z_Build.bat
  2. 139 126
      app/controller/user.go
  3. 159 131
      app/service/imp/user_imp.go
  4. 16 15
      app/service/user_service.go
  5. 1 1
      config.yaml
  6. 0 1
      global/db.go
  7. 2 2
      global/redis.go
  8. 48 0
      global/user.sql
  9. 1 0
      go.mod
  10. 2 0
      go.sum
  11. 11 0
      log/app.log
  12. 0 6
      main.go
  13. 1 0
      models/user.go

+ 10 - 0
Z_Build.bat

@@ -0,0 +1,10 @@
+cd %~dp0
+set GOARCH=amd64
+set GOOS=linux
+set GOPATH=E:\gopath
+set GO111MODULE=auto
+
+go build -o Ic_ouath main.go
+
+
+

+ 139 - 126
app/controller/user.go

@@ -1,18 +1,18 @@
 package controller
 
 import (
-    "Ic_ouath/app/e"
-    "Ic_ouath/app/service"
-    "Ic_ouath/app/service/imp"
-    "Ic_ouath/global"
-    "Ic_ouath/models"
-    "Ic_ouath/page"
-    "Ic_ouath/simple_zap"
-    "Ic_ouath/utils"
-    "context"
-    "github.com/astaxie/beego/validation"
-    "github.com/gin-gonic/gin"
-    "github.com/go-playground/validator/v10"
+	"Ic_ouath/app/e"
+	"Ic_ouath/app/service"
+	"Ic_ouath/app/service/imp"
+	"Ic_ouath/global"
+	"Ic_ouath/models"
+	"Ic_ouath/page"
+	"Ic_ouath/simple_zap"
+	"Ic_ouath/utils"
+	"context"
+	"github.com/astaxie/beego/validation"
+	"github.com/gin-gonic/gin"
+	"github.com/go-playground/validator/v10"
 )
 
 var users service.User = &imp.User{}
@@ -26,14 +26,14 @@ var users service.User = &imp.User{}
 // @Accept application/json
 // @Router /user [post]
 func PhoneRegist(c *gin.Context) {
-    var userRegist models.UserRegist
-    err := c.ShouldBindJSON(&userRegist)
-    if err != nil {
-        e.ResponseError(c, e.JSONParsingFailed)
-        return
-    }
-    rescode := users.PhoneRegist(userRegist)
-    e.ResponseError(c, rescode)
+	var userRegist models.UserRegist
+	err := c.ShouldBindJSON(&userRegist)
+	if err != nil {
+		e.ResponseError(c, e.JSONParsingFailed)
+		return
+	}
+	rescode := users.PhoneRegist(userRegist)
+	e.ResponseError(c, rescode)
 }
 
 // SendCode 发送验证码
@@ -45,21 +45,23 @@ func PhoneRegist(c *gin.Context) {
 // @Accept application/json
 // @Router /sendcode [post]
 func SendCode(c *gin.Context) {
-    phone := c.PostForm("phone")
-    utils.SendModel(phone)
-    v := validation.Validation{}
-    v.Mobile(phone, "phone")
-    v.Required(phone, "phone")
-    if v.HasErrors() {
-        e.ResponseWithMsg(c, e.ThePhoneNumberIsWrong, "手机号码格式不正确")
-    } else {
-        rescode := utils.SendModel(phone)
-        if rescode != e.SUCCESS {
-            e.ResponseWithMsg(c, rescode, rescode.GetMsg())
-        } else {
-            e.ResponseSuccess(c, "发送成功")
-        }
-    }
+	phone := c.PostForm("phone")
+	utils.SendModel(phone)
+	v := validation.Validation{}
+	v.Mobile(phone, "phone")
+	v.Required(phone, "phone")
+	if v.HasErrors() {
+		e.ResponseWithMsg(c, e.ThePhoneNumberIsWrong, "手机号码格式不正确")
+		return
+	} else {
+		rescode := utils.SendModel(phone)
+		if rescode != e.SUCCESS {
+			e.ResponseWithMsg(c, rescode, rescode.GetMsg())
+			return
+		} else {
+			e.ResponseSuccess(c, "发送成功")
+		}
+	}
 }
 
 // Login 账号登录
@@ -71,19 +73,23 @@ func SendCode(c *gin.Context) {
 // @Accept application/json
 // @Router /user [post]
 func Login(c *gin.Context) {
-    var userRegist models.UserRegist
-    err := c.ShouldBindJSON(&userRegist)
-    if err != nil {
-        e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
-        return
-    } else {
-        login, rescode := users.Login(userRegist)
-        if rescode == e.SUCCESS {
-            e.ResponseSuccess(c, login)
-        } else {
-            e.ResponseWithMsg(c, rescode, rescode.GetMsg())
-        }
-    }
+	var userRegist models.UserRegist
+	err := c.ShouldBindJSON(&userRegist)
+	if err != nil {
+		e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
+		return
+	} else {
+		login, rescode := users.Login(userRegist)
+		if rescode == e.SUCCESS {
+			e.ResponseSuccess(c, login)
+			return
+		} else {
+			e.ResponseWithMsg(c, rescode, rescode.GetMsg())
+			simple_zap.WithCtx(context.Background()).Sugar().Warn(err, rescode.GetMsg())
+			return
+		}
+	}
 }
 
 // CodeLogin  验证码登录
@@ -95,31 +101,35 @@ func Login(c *gin.Context) {
 // @Accept application/json
 // @Router /codelogin [post]
 func CodeLogin(c *gin.Context) {
-    var userRegist models.UserRegist
-    err := c.ShouldBindJSON(&userRegist)
-    if err != nil {
-        e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
-        return
-    }
-    login, rescode := users.CodeLogin(userRegist)
-    if rescode == e.SUCCESS {
-        e.ResponseSuccess(c, login)
-    } else {
-        e.ResponseWithMsg(c, rescode, rescode.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Warn(err, rescode.GetMsg())
-    }
+	var userRegist models.UserRegist
+	err := c.ShouldBindJSON(&userRegist)
+	if err != nil {
+		e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
+		return
+	}
+	login, rescode := users.CodeLogin(userRegist)
+	if rescode == e.SUCCESS {
+		e.ResponseSuccess(c, login)
+		return
+	} else {
+		e.ResponseWithMsg(c, rescode, rescode.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, rescode.GetMsg())
+		return
+	}
 }
 
 // GetUserAll 获取所有用户
 
 func GetUserAll(c *gin.Context) {
-    user, rescode := users.GetUserAll()
-    if rescode == e.SUCCESS {
-        e.ResponseSuccess(c, user)
-    } else {
-        e.ResponseWithMsg(c, rescode, rescode.GetMsg())
-    }
+	user, rescode := users.GetUserAll()
+	if rescode == e.SUCCESS {
+		e.ResponseSuccess(c, user)
+		return
+	} else {
+		e.ResponseWithMsg(c, rescode, rescode.GetMsg())
+		return
+	}
 }
 
 // GetUserAlls 获取所有用户
@@ -131,20 +141,20 @@ func GetUserAll(c *gin.Context) {
 // @Accept application/json
 // @Router /admin/getalluser [post]
 func GetUserAlls(c *gin.Context) {
-    var pages page.PageParams
-    err := c.ShouldBindJSON(&pages)
-    if err != nil {
-        e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
-        return
-    }
-    result, total, err := page.Paginate(global.DBLink, pages, models.User{})
-    if err != nil {
-        e.ResponseWithMsg(c, e.PaginationFailed, e.PaginationFailed.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.PaginationFailed.GetMsg())
-        return
-    }
-    e.ResPonsePage(c, result, total, pages)
+	var pages page.PageParams
+	err := c.ShouldBindJSON(&pages)
+	if err != nil {
+		e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
+		return
+	}
+	result, total, err := page.Paginate(global.DBLink, pages, models.User{})
+	if err != nil {
+		e.ResponseWithMsg(c, e.PaginationFailed, e.PaginationFailed.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.PaginationFailed.GetMsg())
+		return
+	}
+	e.ResPonsePage(c, result, total, pages)
 }
 
 // UpdateUserById 修改用户信息
@@ -156,22 +166,23 @@ func GetUserAlls(c *gin.Context) {
 // @Accept application/json
 // @Router /admin/user [post]
 func UpdateUserById(c *gin.Context) {
-    var userVo models.UserVo
-    userId := c.MustGet("user_id")
-    err := c.ShouldBindJSON(&userVo)
-    if err != nil {
-        e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
-        return
-    }
-    recode := users.UpdateUser(userId, userVo)
-    if recode == e.SUCCESS {
-        e.ResponseSuccess(c, "修改成功")
-    } else {
-        e.ResponseWithMsg(c, recode, recode.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Info(err, recode.GetMsg())
-
-    }
+	var userVo models.UserVo
+	userId := c.MustGet("user_id")
+	err := c.ShouldBindJSON(&userVo)
+	if err != nil {
+		e.ResponseWithMsg(c, e.JSONParsingFailed, e.JSONParsingFailed.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, e.JSONParsingFailed.GetMsg())
+		return
+	}
+	recode := users.UpdateUser(userId, userVo)
+	if recode == e.SUCCESS {
+		e.ResponseSuccess(c, "修改成功")
+		return
+	} else {
+		e.ResponseWithMsg(c, recode, recode.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Info(err, recode.GetMsg())
+		return
+	}
 }
 
 // DeleteUserById 删除用户信息
@@ -183,15 +194,16 @@ func UpdateUserById(c *gin.Context) {
 // @Accept application/json
 // @Router /admin/user [delete]
 func DeleteUserById(c *gin.Context) {
-    ids := c.QueryArray("ids")
-    recode := users.DeleteUser(ids)
-    if recode == e.SUCCESS {
-        e.ResponseSuccess(c, "删除成功")
-    } else {
-        e.ResponseWithMsg(c, recode, recode.GetMsg())
-        simple_zap.WithCtx(context.Background()).Sugar().Info(recode.GetMsg())
-    }
-
+	ids := c.QueryArray("ids")
+	recode := users.DeleteUser(ids)
+	if recode == e.SUCCESS {
+		e.ResponseSuccess(c, "删除成功")
+		return
+	} else {
+		e.ResponseWithMsg(c, recode, recode.GetMsg())
+		simple_zap.WithCtx(context.Background()).Sugar().Info(recode.GetMsg())
+		return
+	}
 }
 
 // UpdatePassword 修改账号密码
@@ -203,23 +215,24 @@ func DeleteUserById(c *gin.Context) {
 // @Accept application/json
 // @Router /user [post]
 func UpdatePassword(c *gin.Context) {
-    var userRegist models.UserUpdate
-    err := c.ShouldBindJSON(&userRegist)
-    if err != nil {
-        e.ResponseError(c, e.JSONParsingFailed)
-        return
-    }
-    validate := validator.New()
-    err = validate.Struct(userRegist)
-    if err != nil {
-        e.ResponseWithMsg(c, e.ERROR, err.Error())
-        return
-    }
-    rescode := users.UpdatePassword(userRegist)
-    if rescode == e.SUCCESS {
-        e.ResponseSuccess(c, nil)
-        return
-    } else {
-        e.ResponseWithMsg(c, rescode, rescode.GetMsg())
-    }
+	var userRegist models.UserUpdate
+	err := c.ShouldBindJSON(&userRegist)
+	if err != nil {
+		e.ResponseError(c, e.JSONParsingFailed)
+		return
+	}
+	validate := validator.New()
+	err = validate.Struct(userRegist)
+	if err != nil {
+		e.ResponseWithMsg(c, e.ERROR, err.Error())
+		return
+	}
+	rescode := users.UpdatePassword(userRegist)
+	if rescode == e.SUCCESS {
+		e.ResponseSuccess(c, nil)
+		return
+	} else {
+		e.ResponseWithMsg(c, rescode, rescode.GetMsg())
+		return
+	}
 }

+ 159 - 131
app/service/imp/user_imp.go

@@ -1,163 +1,191 @@
 package imp
 
 import (
-    "Ic_ouath/app/e"
-    "Ic_ouath/global"
-    "Ic_ouath/models"
-    "Ic_ouath/utils"
-    "context"
-    "fmt"
-    "strconv"
+	"Ic_ouath/app/e"
+	"Ic_ouath/global"
+	"Ic_ouath/models"
+	"Ic_ouath/utils"
+	"context"
+	"errors"
+	"fmt"
+	uuid "github.com/satori/go.uuid"
+	"gorm.io/gorm"
+	"strconv"
 )
 
 type User struct{}
 
 func (u *User) UpdatePassword(user models.UserUpdate) e.Rescode {
-    //TODO implement me
-    var users models.User
-    tx := global.DBLink.Where("phone=?", user.Phone).Find(&users)
-    ctx := context.Background()
-    result, err := global.Rdb.Get(ctx, user.Phone).Result()
-    if err != nil {
-        return e.CodeIsError
-    } else if result != user.Code {
-        return e.CodeIsError
-    }
-    if tx.RowsAffected > 0 {
-        user.Password = utils.MD5(user.Password)
-        tx = global.DBLink.Model(&users).Where("phone=?", user.Phone).Update("password", user.Password)
-        if tx.RowsAffected > 0 {
-            return e.SUCCESS
-        }
-        return e.ERROR
-    }
-    return e.TheSystemIsAbnormal
+	//TODO implement me
+	var users models.User
+	tx := global.DBLink.Where("phone=?", user.Phone).Find(&users)
+	ctx := context.Background()
+	result, err := global.Rdb.Get(ctx, user.Phone).Result()
+	if err != nil {
+		return e.CodeIsError
+	} else if result != user.Code {
+		return e.CodeIsError
+	}
+	if tx.RowsAffected > 0 {
+		user.Password = utils.MD5(user.Password)
+		tx = global.DBLink.Model(&users).Where("phone=?", user.Phone).Update("password", user.Password)
+		if tx.RowsAffected > 0 {
+			return e.SUCCESS
+		}
+		return e.ERROR
+	}
+	return e.TheSystemIsAbnormal
 }
 
 func (u *User) PhoneRegist(userRegist models.UserRegist) e.Rescode {
-    //查找账号是否注册或者手机号已经注册,一个手机号只能注册一个账号
-    tx := global.DBLink.Where("account = ?", userRegist.Account).Find(&models.User{})
-    row := global.DBLink.Where("phone = ?", userRegist.Phone).Find(&models.User{})
-    if row.RowsAffected > 0 {
-        return e.AlreadyExists
-    }
-    if tx.RowsAffected > 0 {
-        return e.AlreadyExists
-    } else {
-        ctx := context.Background()
-        result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
-        if err != nil {
-            return e.TheVerificationCodeWasNotSent
-        } else if result != userRegist.Code {
-            return e.CodeIsError
-        }
-        var user = models.User{
-            Phone:    userRegist.Phone,
-            Account:  userRegist.Account,
-            Password: utils.MD5(userRegist.Password),
-            Username: userRegist.Username,
-            State:    true,
-        }
-        tx = global.DBLink.Create(&user)
-        if tx.RowsAffected > 0 {
-            return e.SUCCESS
-        }
-    }
-    return e.ERROR
+	//查找账号是否注册或者手机号已经注册,一个手机号只能注册一个账号
+	tx := global.DBLink.Where("account = ?", userRegist.Account).Find(&models.User{})
+	row := global.DBLink.Where("phone = ?", userRegist.Phone).Find(&models.User{})
+	if row.RowsAffected > 0 {
+		return e.AlreadyExists
+	}
+	if tx.RowsAffected > 0 {
+		return e.AlreadyExists
+	} else {
+		ctx := context.Background()
+		result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
+		if err != nil {
+			return e.TheVerificationCodeWasNotSent
+		} else if result != userRegist.Code {
+			return e.CodeIsError
+		}
+		var user = models.User{
+			Phone:    userRegist.Phone,
+			Account:  userRegist.Account,
+			Password: utils.MD5(userRegist.Password),
+			Username: userRegist.Username,
+			State:    true,
+			UUid:     uuid.NewV4().String(),
+		}
+		tx = global.DBLink.Create(&user)
+		if tx.RowsAffected > 0 {
+			return e.SUCCESS
+		}
+	}
+	return e.ERROR
 }
 
 // Login 账号密码登录
 func (u *User) Login(userRegist models.UserRegist) (models.UserDto, e.Rescode) {
-    var count int64
-    var userdto models.UserDto
-    var user models.User
-    md5 := utils.MD5(userRegist.Password)
-    global.DBLink.Where("account=?", userRegist.Account).Where("password=?", md5).Find(&user).Count(&count)
-    if count > 0 {
-        token, err := utils.CreateToken(user.ID, user.Username, user.Role)
-        token = "manage:" + token
-        if err != nil {
-            return userdto, e.TokenIsFaild
-        } else {
-            userdto.Token = token
-            userdto.Username = user.Username
-            userdto.Account = user.Account
-            userdto.Avatar = user.Avatar
-            userdto.ID = user.ID
-            userdto.Role = user.Role
-            return userdto, e.SUCCESS
-        }
-    } else {
-        return userdto, e.ThePasswordIsWrongOrThePhoneNumberIsIncorrect
-    }
+	var count int64
+	var userdto models.UserDto
+	var user models.User
+	md5 := utils.MD5(userRegist.Password)
+	global.DBLink.Where("account=?", userRegist.Account).Where("password=?", md5).Find(&user).Count(&count)
+	if count > 0 {
+		token, err := utils.CreateToken(user.ID, user.Username, user.Role)
+		token = "manage:" + token
+		if err != nil {
+			return userdto, e.TokenIsFaild
+		} else {
+			userdto.Token = token
+			userdto.Username = user.Username
+			userdto.Account = user.Account
+			userdto.Avatar = user.Avatar
+			userdto.ID = user.ID
+			userdto.Role = user.Role
+			userdto.UUid = user.UUid
+			return userdto, e.SUCCESS
+		}
+	} else {
+		return userdto, e.ThePasswordIsWrongOrThePhoneNumberIsIncorrect
+	}
 }
 
 // CodeLogin 验证码登录
 func (u *User) CodeLogin(userRegist models.UserRegist) (models.UserDto, e.Rescode) {
-    var user models.User
-    var userdto models.UserDto
-    tx := global.DBLink.Where("phone=?", userRegist.Phone).Find(&user)
-    ctx := context.Background()
-    result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
-    if err != nil {
-        return userdto, e.CodeIsError
-    } else if result != userRegist.Code {
-        return userdto, e.CodeIsError
-    }
-    token, err := utils.CreateToken(user.ID, user.Username, user.Role)
-    token = "manage:" + token
-    userdto.Token = token
-    if tx.RowsAffected > 0 {
-        userdto.Username = user.Username
-        userdto.Account = user.Account
-        userdto.Avatar = user.Avatar
-        userdto.ID = user.ID
-        userdto.Role = user.Role
-        return userdto, e.SUCCESS
-    } else {
-        return models.UserDto{}, e.GoToRegister
-    }
+	var user models.User
+	var userdto models.UserDto
+	tx := global.DBLink.Where("phone=?", userRegist.Phone).Find(&user)
+	ctx := context.Background()
+	result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
+	if err != nil {
+		return userdto, e.CodeIsError
+	} else if result != userRegist.Code {
+		return userdto, e.CodeIsError
+	}
+	token, err := utils.CreateToken(user.ID, user.Username, user.Role)
+	token = "manage:" + token
+	userdto.Token = token
+	if tx.RowsAffected > 0 {
+		userdto.Username = user.Username
+		userdto.Account = user.Account
+		userdto.Avatar = user.Avatar
+		userdto.ID = user.ID
+		userdto.Role = user.Role
+		userdto.UUid = user.UUid
+		return userdto, e.SUCCESS
+	} else {
+		return models.UserDto{}, e.GoToRegister
+	}
 }
 
 // GetUserAll 获取所有用户
 func (u *User) GetUserAll() ([]models.User, e.Rescode) {
-    //TODO implement me
-    var users []models.User
-    tx := global.DBLink.Find(&users)
-    if tx.RowsAffected > 0 {
-        return users, e.SUCCESS
-    }
-    return users, e.TheUserIsEmpty
+	//TODO implement me
+	var users []models.User
+	tx := global.DBLink.Find(&users)
+	if tx.RowsAffected > 0 {
+		return users, e.SUCCESS
+	}
+	return users, e.TheUserIsEmpty
 }
 
 // UpdateUser 更新用户
 func (u *User) UpdateUser(id any, uservo models.UserVo) e.Rescode {
-    var user models.User
-    atoi, _ := strconv.Atoi(fmt.Sprint(id))
-    tx := global.DBLink.Model(&user).
-        Where("id=?", uservo.Id).
-        Updates(models.User{
-            Username: uservo.Username,
-            State:    uservo.State,
-            Avatar:   uservo.Avatar,
-            Account:  uservo.Account,
-            Phone:    uservo.Phone,
-            Password: utils.MD5(uservo.Password),
-            UpdateBy: atoi,
-        })
-    if tx.RowsAffected > 0 {
-        return e.SUCCESS
-    }
-    return e.UPDATEFAIL
+	var user models.User
+	atoi, _ := strconv.Atoi(fmt.Sprint(id))
+	tx := global.DBLink.Model(&user).
+		Where("id=?", uservo.Id).
+		Updates(models.User{
+			Username: uservo.Username,
+			State:    uservo.State,
+			Avatar:   uservo.Avatar,
+			Account:  uservo.Account,
+			Phone:    uservo.Phone,
+			Password: utils.MD5(uservo.Password),
+			UpdateBy: atoi,
+		})
+	if tx.RowsAffected > 0 {
+		return e.SUCCESS
+	}
+	return e.UPDATEFAIL
 }
 
 // DeleteUser 删除用户
 func (u *User) DeleteUser(ids []string) e.Rescode {
-    for _, id := range ids {
-        tx := global.DBLink.Where("id=?", id).Delete(&models.User{})
-        if tx.RowsAffected > 0 {
-            return e.SUCCESS
-        }
-    }
-    return e.DELETEFAIL
+	for _, id := range ids {
+		tx := global.DBLink.Where("id=?", id).Delete(&models.User{})
+		if tx.RowsAffected > 0 {
+			return e.SUCCESS
+		}
+	}
+	return e.DELETEFAIL
+}
+func (u *User) CreateAdmin() error {
+	var user models.User
+	var err error
+	err = global.DBLink.Where("username = ?", "admin").Where("account = ?", "admin").First(&user).Error
+	if err != nil {
+		if errors.Is(err, gorm.ErrRecordNotFound) {
+			md5 := utils.MD5("bzd123")
+			user.Password = md5
+			user.Username = "admin"
+			user.Account = "admin"
+			user.Role = "admin"
+			user.State = true
+			user.UUid = uuid.NewV4().String()
+			err = global.DBLink.Create(&user).Error
+			if err != nil {
+				return errors.New("初始化管理员失败")
+
+			}
+		}
+	}
+	return nil
 }

+ 16 - 15
app/service/user_service.go

@@ -1,22 +1,23 @@
 package service
 
 import (
-    "Ic_ouath/app/e"
-    "Ic_ouath/models"
+	"Ic_ouath/app/e"
+	"Ic_ouath/models"
 )
 
 type User interface {
-    // PhoneRegist 手机号注册
-    PhoneRegist(user models.UserRegist) e.Rescode
-    // Login 账号密码登录
-    Login(user models.UserRegist) (models.UserDto, e.Rescode)
-    // CodeLogin 验证码登录
-    CodeLogin(user models.UserRegist) (models.UserDto, e.Rescode)
-    // GetUserAll 获取所有用户
-    GetUserAll() ([]models.User, e.Rescode)
-    //UpdateUser 更新用户信息
-    UpdateUser(id any, user models.UserVo) e.Rescode
-    // DeleteUser 删除用户信息
-    DeleteUser(ids []string) e.Rescode
-    UpdatePassword(user models.UserUpdate) e.Rescode
+	// PhoneRegist 手机号注册
+	PhoneRegist(user models.UserRegist) e.Rescode
+	// Login 账号密码登录
+	Login(user models.UserRegist) (models.UserDto, e.Rescode)
+	// CodeLogin 验证码登录
+	CodeLogin(user models.UserRegist) (models.UserDto, e.Rescode)
+	// GetUserAll 获取所有用户
+	GetUserAll() ([]models.User, e.Rescode)
+	//UpdateUser 更新用户信息
+	UpdateUser(id any, user models.UserVo) e.Rescode
+	// DeleteUser 删除用户信息
+	DeleteUser(ids []string) e.Rescode
+	UpdatePassword(user models.UserUpdate) e.Rescode
+	CreateAdmin() error
 }

+ 1 - 1
config.yaml

@@ -35,7 +35,7 @@ subMail:
   appid: "97173"
   signature: "f639a60e41ee0554921d89884f5ff87e"
 redis:
-  addr: "192.168.11.24:6379"
+  addr: "127.0.0.1:6379"
   password: ""
   db: 0
 nats:

+ 0 - 1
global/db.go

@@ -35,7 +35,6 @@ func SetupDBLink() error {
 		log.Print("当前系统为windows")
 	} else if sysType == "linux" {
 		DBLink, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
-
 	}
 	if err != nil {
 		return err

+ 2 - 2
global/redis.go

@@ -15,8 +15,8 @@ func SetupRedisLink() {
 	//db := RedisSetting.DB
 	Rdb = redis.NewClient(&redis.Options{
 		Addr:     configs.Config.GetString("redis.addr"),
-		Password: "",
-		DB:       0,
+		Password: configs.Config.GetString("redis.password"),
+		DB:       configs.Config.GetInt("redis.db"),
 	})
 	ctx := context.Background()
 	_, err := Rdb.Ping(ctx).Result()

+ 48 - 0
global/user.sql

@@ -0,0 +1,48 @@
+/*
+ Navicat Premium Dump SQL
+
+ Source Server         : 物联智控-统一登录
+ Source Server Type    : MySQL
+ Source Server Version : 80403 (8.4.3)
+ Source Host           : 203.15.11.41:3306
+ Source Schema         : Ic_ouath
+
+ Target Server Type    : MySQL
+ Target Server Version : 80403 (8.4.3)
+ File Encoding         : 65001
+
+ Date: 06/12/2024 16:13:46
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user`  (
+  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
+  `created_at` datetime(3) NULL DEFAULT NULL,
+  `updated_at` datetime(3) NULL DEFAULT NULL,
+  `deleted_at` datetime(3) NULL DEFAULT NULL,
+  `username` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `account` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `phone` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `avatar` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `password` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `open_id` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `role` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `state` tinyint(1) NULL DEFAULT NULL,
+  `session_key` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
+  `update_by` bigint NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_deleted_at`(`deleted_at` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of user
+-- ----------------------------
+INSERT INTO `user` VALUES (1, '2024-12-06 10:53:46.000', '2024-12-06 10:53:49.000', NULL, 'admin', 'admin', NULL, NULL, '5625be821f2fcbada6125fce0126d0e6', NULL, 'admin', 1, NULL, NULL);
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 1 - 0
go.mod

@@ -65,6 +65,7 @@ require (
 	github.com/pkg/errors v0.9.1 // indirect
 	github.com/sagikazarmark/locafero v0.4.0 // indirect
 	github.com/sagikazarmark/slog-shim v0.1.0 // indirect
+	github.com/satori/go.uuid v1.2.0 // indirect
 	github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
 	github.com/sourcegraph/conc v0.3.0 // indirect
 	github.com/spf13/afero v1.11.0 // indirect

+ 2 - 0
go.sum

@@ -228,6 +228,8 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke
 github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
 github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
 github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
+github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
+github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
 github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=

+ 11 - 0
log/app.log

@@ -31,3 +31,14 @@
 {"level":"warn","time":"2024-08-22T16:39:22.326+0800","lineNum":"global/redis.go:23","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: connectex: No connection could be made because the target machine actively refused it."}
 {"level":"warn","time":"2024-08-22T22:28:59.925+0800","lineNum":"global/redis.go:23","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
 {"level":"warn","time":"2024-08-22T22:39:47.652+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-09T16:34:46.614+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-09T16:48:38.257+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-10T13:53:23.556+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-14T10:52:53.742+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-14T17:32:01.945+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-15T09:15:22.273+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-10-16T10:22:20.572+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2024-12-09T11:41:17.421+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 192.168.11.24:6379: i/o timeout"}
+{"level":"warn","time":"2025-01-06T11:45:27.600+0800","lineNum":"controller/user.go:117","func":"Ic_ouath/app/controller.CodeLogin","message":"<nil>请前往注册"}
+{"level":"warn","time":"2025-02-08T15:00:07.459+0800","lineNum":"global/redis.go:24","func":"Ic_ouath/global.SetupRedisLink","message":"redis连接失败dial tcp 127.0.0.1:6379: connectex: No connection could be made because the target machine actively refused it."}
+{"level":"warn","time":"2025-02-08T15:00:07.460+0800","lineNum":"nats/Nats.go:28","func":"Ic_ouath/nats.SetupNats","message":"dial tcp 127.0.0.1:4222: connectex: No connection could be made because the target machine actively refused it.nats 连接失败"}

+ 0 - 6
main.go

@@ -4,23 +4,17 @@ import (
 	"Ic_ouath/app"
 	"Ic_ouath/global"
 	"Ic_ouath/nats"
-	_ "Ic_ouath/nats"
 	"Ic_ouath/simple_zap"
 	"context"
 )
 
 func init() {
-	//err := global.SetupSetting()
-	//if err != nil {
-	//    simple_zap.WithCtx(context.Background()).Sugar().Warn(err, "配置文件读取失败")
-	//}
 	err := global.SetupDBLink()
 	if err != nil {
 		simple_zap.WithCtx(context.Background()).Sugar().Warn(err, "数据库连接失败")
 	}
 	global.SetupRedisLink()
 	nats.SetupNats()
-
 }
 
 // @title 统一登录平台

+ 1 - 0
models/user.go

@@ -7,6 +7,7 @@ import (
 type User struct {
 	gorm.Model
 	Username   string `json:"username"` //用户名
+	UUid       string `json:"T_Uuid"`
 	Account    string `json:"account"`
 	Phone      string `json:"phone"`
 	Avatar     string `json:"avatar"`