|
|
package scripts
|
|
|
|
|
|
import (
|
|
|
"mygo/conf"
|
|
|
"mygo/model"
|
|
|
"mygo/response"
|
|
|
"mygo/say"
|
|
|
|
|
|
"mygo/dbhelper"
|
|
|
"mygo/libs"
|
|
|
"mygo/validator"
|
|
|
|
|
|
"github.com/labstack/echo/v4"
|
|
|
"gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
func CreateUser(c echo.Context) error {
|
|
|
|
|
|
data := response.CreateAdminResponse{}
|
|
|
body := &validator.CreateAdminBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserName == "" || body.PassWord == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
username := body.UserName
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
user, err := model.GetUserByUserName(db, username)
|
|
|
if err != nil || user.ID != "" {
|
|
|
return say.Success(c, 10013, data)
|
|
|
}
|
|
|
|
|
|
password := body.PassWord
|
|
|
salt := libs.GenString(8)
|
|
|
|
|
|
pwd, err := libs.EncryptWithFixedSalt(password, conf.ObtenationIterations, username, salt)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
u := model.User{
|
|
|
ID: libs.GenId(),
|
|
|
UserName: username,
|
|
|
PassWord: pwd,
|
|
|
Salt: salt,
|
|
|
RealName: body.RealName,
|
|
|
}
|
|
|
db.Create(&u)
|
|
|
|
|
|
data.Id = u.ID
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func UpdatePwd(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
oldpassword := c.QueryParam("oldpassword")
|
|
|
password := c.QueryParam("password")
|
|
|
data := response.NoneResponse{}
|
|
|
if id == "" || oldpassword == "" || password == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
user, err := model.GetUserById(db, id)
|
|
|
|
|
|
if err != nil || user.ID == "" {
|
|
|
return say.Success(c, 10004, data)
|
|
|
}
|
|
|
|
|
|
mysalt := user.Salt
|
|
|
mypwd := user.PassWord
|
|
|
uname, err := libs.DecryptWithFixedSalt(oldpassword, conf.ObtenationIterations, mypwd, mysalt)
|
|
|
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10025, data)
|
|
|
}
|
|
|
|
|
|
if uname != user.UserName {
|
|
|
return say.Success(c, 10026, data)
|
|
|
}
|
|
|
|
|
|
salt := libs.GenString(8)
|
|
|
pwd, err := libs.EncryptWithFixedSalt(password, conf.ObtenationIterations, user.UserName, salt)
|
|
|
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10023, data)
|
|
|
}
|
|
|
|
|
|
rows := db.Model(&user).Updates(map[string]interface{}{"password": pwd, "salt": salt}).RowsAffected
|
|
|
if rows <= 0 {
|
|
|
return say.Success(c, 10023, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func UpdateUser(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.UpdateAdminBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserID == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
userid := body.UserID
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
user, err := model.GetUserById(db, userid)
|
|
|
if err != nil || user.ID == "" {
|
|
|
return say.Success(c, 10004, data)
|
|
|
}
|
|
|
|
|
|
rows := db.Model(&user).Updates(map[string]interface{}{"root": body.Root, "realname": body.RealName, "avatar": body.Avatar}).RowsAffected
|
|
|
if rows <= 0 {
|
|
|
return say.Success(c, 10014, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func DelUser(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
user_id := c.QueryParam("user_id")
|
|
|
|
|
|
data := response.NoneResponse{}
|
|
|
if id == "" || user_id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
user, err := model.GetUserById(db, user_id)
|
|
|
if err != nil || user.ID == "" {
|
|
|
return say.Success(c, 10004, data)
|
|
|
}
|
|
|
|
|
|
txerr := db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
|
|
// 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db')
|
|
|
|
|
|
u := model.User{}
|
|
|
if err := tx.Where("id = ?", user_id).Delete(&u).Error; err != nil {
|
|
|
// 返回任何错误都会回滚事务
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
r := model.UserRole{}
|
|
|
if err := tx.Where("user_id = ?", user_id).Delete(&r).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
// 返回 nil 提交事务
|
|
|
return nil
|
|
|
})
|
|
|
|
|
|
if txerr != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func GetUserList(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
|
|
|
data := response.AdminListResponse{}
|
|
|
if id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
body := &validator.UserListBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
page := body.Page
|
|
|
if page <= 0 {
|
|
|
page = 1
|
|
|
}
|
|
|
limit := body.Limit
|
|
|
|
|
|
if limit <= 0 {
|
|
|
limit = 10
|
|
|
}
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
user := model.User{}
|
|
|
var count int64 = 0
|
|
|
db.Find(&user).Count(&count) //总数
|
|
|
|
|
|
data.Count = count
|
|
|
|
|
|
offset := (page - 1) * limit
|
|
|
users, err := model.GetUserList(db, body.UserName, body.RealName, offset, limit)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
data.Users = users
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func CheckUserName(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.CheckUserNameBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserName == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
username := body.UserName
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
user, err := model.GetUserByUserName(db, username)
|
|
|
if err != nil || user.ID != "" {
|
|
|
return say.Success(c, 10013, data)
|
|
|
}
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|