user.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*
  2. * @Author: LinkLeong link@icewhale.com
  3. * @Date: 2022-03-18 11:40:55
  4. * @LastEditors: LinkLeong
  5. * @LastEditTime: 2022-06-23 19:45:49
  6. * @FilePath: /CasaOS/service/user.go
  7. * @Description:
  8. * @Website: https://www.casaos.io
  9. * Copyright (c) 2022 by icewhale, All Rights Reserved.
  10. */
  11. package service
  12. import (
  13. "io"
  14. "mime/multipart"
  15. "os"
  16. "github.com/IceWhaleTech/CasaOS/pkg/config"
  17. "github.com/IceWhaleTech/CasaOS/service/model"
  18. "gorm.io/gorm"
  19. )
  20. type UserService interface {
  21. SetUser(username, pwd, token, email, desc, nickName string) error
  22. UpLoadFile(file multipart.File, name string) error
  23. CreateUser(m model.UserDBModel) model.UserDBModel
  24. GetUserCount() (userCount int64)
  25. UpdateUser(m model.UserDBModel)
  26. UpdateUserPassword(m model.UserDBModel)
  27. GetUserInfoById(id string) (m model.UserDBModel)
  28. GetUserAllInfoById(id string) (m model.UserDBModel)
  29. GetUserAllInfoByName(userName string) (m model.UserDBModel)
  30. DeleteUserById(id string)
  31. GetUserInfoByUserName(userName string) (m model.UserDBModel)
  32. GetAllUserName() (list []model.UserDBModel)
  33. }
  34. var UserRegisterHash = make(map[string]string)
  35. type userService struct {
  36. db *gorm.DB
  37. }
  38. func (u *userService) DeleteUserById(id string) {
  39. u.db.Where("id= ?", id).Delete(&model.UserDBModel{})
  40. }
  41. func (u *userService) GetAllUserName() (list []model.UserDBModel) {
  42. u.db.Select("user_name").Find(&list)
  43. return
  44. }
  45. func (u *userService) CreateUser(m model.UserDBModel) model.UserDBModel {
  46. u.db.Create(&m)
  47. return m
  48. }
  49. func (u *userService) GetUserCount() (userCount int64) {
  50. u.db.Find(&model.UserDBModel{}).Count(&userCount)
  51. return
  52. }
  53. func (u *userService) UpdateUser(m model.UserDBModel) {
  54. u.db.Model(&m).Omit("password").Updates(&m)
  55. }
  56. func (u *userService) UpdateUserPassword(m model.UserDBModel) {
  57. u.db.Model(&m).Update("password", m.Password)
  58. }
  59. func (u *userService) GetUserAllInfoById(id string) (m model.UserDBModel) {
  60. u.db.Where("id= ?", id).First(&m)
  61. return
  62. }
  63. func (u *userService) GetUserAllInfoByName(userName string) (m model.UserDBModel) {
  64. u.db.Where("user_name= ?", userName).First(&m)
  65. return
  66. }
  67. func (u *userService) GetUserInfoById(id string) (m model.UserDBModel) {
  68. u.db.Select("user_name", "id", "role", "nick_name", "description", "avatar").Where("id= ?", id).First(&m)
  69. return
  70. }
  71. func (u *userService) GetUserInfoByUserName(userName string) (m model.UserDBModel) {
  72. u.db.Select("user_name", "id", "role", "nick_name", "description", "avatar").Where("user_name= ?", userName).First(&m)
  73. return
  74. }
  75. //设置用户名密码
  76. func (u *userService) SetUser(username, pwd, token, email, desc, nickName string) error {
  77. if len(username) > 0 {
  78. config.Cfg.Section("user").Key("UserName").SetValue(username)
  79. config.UserInfo.UserName = username
  80. config.Cfg.Section("user").Key("Initialized").SetValue("true")
  81. config.UserInfo.Initialized = true
  82. }
  83. if len(pwd) > 0 {
  84. config.Cfg.Section("user").Key("PWD").SetValue(pwd)
  85. config.UserInfo.PWD = pwd
  86. }
  87. if len(email) > 0 {
  88. config.Cfg.Section("user").Key("Email").SetValue(email)
  89. config.UserInfo.Email = email
  90. }
  91. if len(desc) > 0 {
  92. config.Cfg.Section("user").Key("Description").SetValue(desc)
  93. config.UserInfo.Description = desc
  94. }
  95. if len(nickName) > 0 {
  96. config.Cfg.Section("user").Key("NickName").SetValue(nickName)
  97. config.UserInfo.NickName = nickName
  98. }
  99. config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
  100. return nil
  101. }
  102. //上传文件
  103. func (c *userService) UpLoadFile(file multipart.File, url string) error {
  104. out, _ := os.OpenFile(url, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
  105. defer out.Close()
  106. io.Copy(out, file)
  107. return nil
  108. }
  109. //获取用户Service
  110. func NewUserService(db *gorm.DB) UserService {
  111. return &userService{db: db}
  112. }