新增用户相关接口

This commit is contained in:
wucongxing 2023-06-29 16:16:21 +08:00
parent 966057fa5b
commit 98aa3263bb
11 changed files with 475 additions and 114 deletions

View File

@ -6,6 +6,7 @@ import (
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/api/service"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"strconv"
@ -46,60 +47,7 @@ func (r *User) GetUserPage(c *gin.Context) {
}
// 处理返回值
getUserPageResponses := make([]userResponse.GetUserPage, len(adminUser))
if len(adminUser) > 0 {
for i, v := range adminUser {
var Role *userResponse.GetUserPageRole
if v.Role != nil {
Role = &userResponse.GetUserPageRole{
RoleId: strconv.FormatInt(v.Role.RoleId, 10),
RoleName: v.Role.RoleName,
}
}
var Dept *userResponse.GetUserPageDept
if v.Dept != nil {
Dept = &userResponse.GetUserPageDept{
DeptId: strconv.FormatInt(v.Dept.DeptId, 10),
DeptName: v.Dept.DeptName,
}
}
var Post *userResponse.GetUserPagePost
if v.Post != nil {
Post = &userResponse.GetUserPagePost{
PostId: strconv.FormatInt(v.Post.PostId, 10),
PostName: v.Post.PostName,
}
}
// 将原始结构体转换为新结构体
getUserPageResponse := userResponse.GetUserPage{
UserID: strconv.Itoa(int(v.UserID)),
Access: v.Access,
Status: v.Status,
IsDeleted: v.IsDeleted,
IsDisabled: v.IsDisabled,
NickName: v.NickName,
Phone: v.Phone,
Avatar: v.Avatar,
Sex: v.Sex,
Email: v.Email,
RoleID: strconv.Itoa(int(v.RoleID)),
DeptID: strconv.Itoa(int(v.DeptID)),
PostID: strconv.Itoa(int(v.PostID)),
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
Role: Role,
Dept: Dept,
Post: Post,
}
// 将转换后的结构体添加到新切片中
getUserPageResponses[i] = getUserPageResponse
}
}
getUserPageResponses := userResponse.GetUserPageResponse(adminUser)
result := make(map[string]interface{})
result["page"] = UserRequest.GetUserPage.Page
@ -112,14 +60,76 @@ func (r *User) GetUserPage(c *gin.Context) {
// AddUser 新增用户
func (r *User) AddUser(c *gin.Context) {
UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.GetUserPage); err != nil {
if err := c.ShouldBind(&UserRequest.AddUser); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(UserRequest.GetUserPage); err != nil {
if err := global.Validate.Struct(UserRequest.AddUser); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
// 业务处理
UserService := service.UserService{}
_, err := UserService.AddUser(c, UserRequest.AddUser)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.Ok(c)
}
// GetUser 用户详情
func (r *User) GetUser(c *gin.Context) {
id := c.Param("user_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
userId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
// 获取用户详情
AdminUserDao := dao.AdminUserDao{}
adminUser, err := AdminUserDao.GetAdminUserFirstById(userId)
if err != nil || adminUser == nil {
responses.FailWithMessage("用户数据错误", c)
return
}
// 处理返回值
getUserResponses := userResponse.GetUserResponse(adminUser)
responses.OkWithData(getUserResponses, c)
}
// DeleteUser 删除用户-批量
func (r *User) DeleteUser(c *gin.Context) {
userRequest := requests.UserRequest{}
if err := c.ShouldBindJSON(&userRequest.DeleteUser); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(userRequest.DeleteUser); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
// 业务处理
userService := service.UserService{}
_, err := userService.DeleteUser(c, userRequest.DeleteUser)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.Ok(c)
}

18
api/dao/adminDept.go Normal file
View File

@ -0,0 +1,18 @@
package dao
import (
"hospital-admin-api/api/model"
"hospital-admin-api/global"
)
type AdminDeptDao struct {
}
// GetAdminDeptFirstById 获取部门数据-部门id
func (r *AdminDeptDao) GetAdminDeptFirstById(deptId int64) (m *model.AdminDept, err error) {
err = global.Db.First(&m, deptId).Error
if err != nil {
return nil, err
}
return m, nil
}

18
api/dao/adminPost.go Normal file
View File

@ -0,0 +1,18 @@
package dao
import (
"hospital-admin-api/api/model"
"hospital-admin-api/global"
)
type AdminPostDao struct {
}
// GetAdminPostFirstById 获取岗位数据-部门id
func (r *AdminPostDao) GetAdminPostFirstById(postId int64) (m *model.AdminPost, err error) {
err = global.Db.First(&m, postId).Error
if err != nil {
return nil, err
}
return m, nil
}

View File

@ -21,8 +21,17 @@ func (r *AdminUserDao) GetAdminUserFirstById(userId int64) (m *model.AdminUser,
}
// GetAdminUserFirstByAccess 获取用户数据-用户账号
func (r *AdminUserDao) GetAdminUserFirstByAccess(username string) (m *model.AdminUser, err error) {
err = global.Db.Where("access = ?", username).First(&m).Error
func (r *AdminUserDao) GetAdminUserFirstByAccess(access string) (m *model.AdminUser, err error) {
err = global.Db.Where("access = ?", access).First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetAdminUserFirstByPhone 获取用户数据-手机号
func (r *AdminUserDao) GetAdminUserFirstByPhone(phone string) (m *model.AdminUser, err error) {
err = global.Db.Where("phone = ?", phone).First(&m).Error
if err != nil {
return nil, err
}
@ -38,6 +47,14 @@ func (r *AdminUserDao) DeleteAdminUser(tx *gorm.DB, maps interface{}) error {
return nil
}
// DeleteAdminUserById 删除用户-用户id
func (r *AdminUserDao) DeleteAdminUserById(tx *gorm.DB, userId int64) error {
if err := tx.Delete(&model.AdminUser{}, userId).Error; err != nil {
return err
}
return nil
}
// EditAdminUser 修改用户
func (r *AdminUserDao) EditAdminUser(tx *gorm.DB, maps interface{}, data interface{}) error {
err := tx.Model(&model.AdminUser{}).Where(maps).Updates(data).Error
@ -116,11 +133,11 @@ func (r *AdminUserDao) GetAdminUserPageSearch(getUserPage requests.GetUserPage,
query = query.Where("status = ?", getUserPage.Status)
}
if getUserPage.DeptId != 0 {
if getUserPage.DeptId != "" {
query = query.Where("dept_id = ?", getUserPage.DeptId)
}
if getUserPage.PostId != 0 {
if getUserPage.PostId != "" {
query = query.Where("post_id = ?", getUserPage.PostId)
}
@ -135,3 +152,11 @@ func (r *AdminUserDao) GetAdminUserPageSearch(getUserPage requests.GetUserPage,
}
return m, totalRecords, nil
}
// AddAdminUser 新增用户
func (r *AdminUserDao) AddAdminUser(tx *gorm.DB, model *model.AdminUser) (*model.AdminUser, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}

View File

@ -18,6 +18,8 @@ type AdminUser struct {
RoleID int64 `gorm:"column:role_id;type:bigint(19);comment:'角色id'" json:"role_id"`
DeptID int64 `gorm:"column:dept_id;type:bigint(19);comment:'部门id'" json:"dept_id"`
PostID int64 `gorm:"column:post_id;type:bigint(19);comment:'岗位id'" json:"post_id"`
CreateBy int64 `gorm:"column:create_by;type:bigint(19);comment:'创建者id用户表id'" json:"create_by"`
UpdateBy int64 `gorm:"column:update_by;type:bigint(19);comment:'更新者id用户表id'" json:"update_by"`
Role *AdminRole `gorm:"foreignKey:RoleID"` // 角色
Dept *AdminDept `gorm:"foreignKey:DeptID"` // 部门
Post *AdminPost `gorm:"foreignKey:PostID"` // 岗位

View File

@ -60,28 +60,6 @@ func (t *LocalTime) String() string {
return fmt.Sprintf("hhh:%s", time.Time(*t).String())
}
// BeforeCreate 注册 BeforeCreate 回调函数
// func (m *Model) BeforeCreate(tx *gorm.DB) (err error) {
// // 动态访问 YourModel 结构体本身
// model := tx.Statement.Dest
//
// // 设置创建时间
// layout := "2006-01-02 15:04:05"
// strTime := "2019-08-09 11:35:52"
// parsedTime, err := time.Parse(layout, strTime)
// if err != nil {
// return err
// }
//
// // 使用反射设置创建时间字段
// createdAtField := reflect.ValueOf(model).Elem().FieldByName("CreatedAt")
// if createdAtField.CanSet() {
// createdAtField.Set(reflect.ValueOf(parsedTime))
// }
//
// return nil
// }
func (m *Model) BeforeUpdate(tx *gorm.DB) (err error) {
m.UpdatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt)

View File

@ -2,6 +2,8 @@ package requests
type UserRequest struct {
GetUserPage // 获取用户列表-分页
AddUser // 新增用户
DeleteUser // 删除用户-批量
}
// GetUserPage 获取用户列表-分页
@ -11,27 +13,30 @@ type GetUserPage struct {
NickName string `json:"nick_name" form:"nick_name" label:"用户昵称"`
Phone string `json:"phone" form:"phone" label:"手机号"`
Status int `json:"status" form:"status" label:"用户状态"` // 1:正常 2:审核中 3:审核失败)
DeptId int64 `json:"dept_id" form:"dept_id" label:"部门"`
PostId int64 `json:"post_id" form:"post_id" label:"岗位"`
DeptId string `json:"dept_id" form:"dept_id" label:"部门"`
PostId string `json:"post_id" form:"post_id" label:"岗位"`
Page int `json:"page" form:"page" label:"页码"`
PageSize int `json:"page_size" form:"page_size" label:"每页个数"`
}
// AddUser 新增用户
type AddUser struct {
Access string `json:"access" form:"access" label:"账号"`
Password string `json:"password" form:"password" label:"密码"`
Status string `json:"status" form:"status" label:"状态"` // 1:正常 2:审核中 3:审核失败)
//
// Status int `gorm:"column:status;type:tinyint(1);default:2;comment:'状态1:正常 2:审核中 3:审核失败)'" json:"status"`
// IsDeleted int `gorm:"column:is_deleted;type:tinyint(1);default:0;comment:'是否被删除0:否 1:是)'" json:"is_deleted"`
// IsDisabled int `gorm:"column:is_disabled;type:tinyint(1);default:0;comment:'是否被禁用0:否 1:是)'" json:"is_disabled"`
// NickName string `gorm:"column:nick_name;type:varchar(255);comment:'昵称'" json:"nick_name"`
// Phone string `gorm:"column:phone;type:varchar(11);comment:'手机号'" json:"phone"`
// Avatar string `gorm:"column:avatar;type:varchar(255);comment:'头像'" json:"avatar"`
// Sex int `gorm:"column:sex;type:tinyint(1);comment:'性别1:男 2:女)'" json:"sex"`
// Email string `gorm:"column:email;type:varchar(100);comment:'邮箱'" json:"email"`
// RoleID int64 `gorm:"column:role_id;type:bigint(19);comment:'角色id'" json:"role_id"`
// DeptID int64 `gorm:"column:dept_id;type:bigint(19);comment:'部门id'" json:"dept_id"`
// PostID int64 `gorm:"column:post_id;type:bigint(19);comment:'岗位id'" json:"post_id"`
Access string `json:"access" form:"access" validate:"required" label:"账号"`
Password string `json:"password" form:"password" validate:"required" label:"密码"`
Status int `json:"status" form:"status" validate:"oneof=1 2 3" label:"状态"` // 1:正常 2:审核中 3:审核失败)
IsDeleted int `json:"is_deleted" form:"is_deleted" validate:"oneof=0 1" label:"删除状态"` // 是否被删除0:否 1:是)
IsDisabled int `json:"is_disabled" form:"is_disabled" validate:"oneof=0 1" label:"禁用状态"` // 是否被禁用0:否 1:是)
NickName string `json:"nick_name" form:"nick_name" validate:"required" label:"昵称"`
Phone string `json:"phone" form:"phone" validate:"required" label:"手机号"`
Avatar string `json:"avatar" form:"avatar" label:"头像"`
Sex int `json:"sex" form:"sex" validate:"required,oneof=1 2" label:"性别"` // 1:男 2:女)
Email string `json:"email" form:"email" label:"邮箱"`
RoleID string `json:"role_id" form:"role_id" validate:"required" label:"角色"`
DeptID string `json:"dept_id" form:"dept_id" validate:"required" label:"部门"`
PostID string `json:"post_id" form:"post_id" validate:"required" label:"岗位"`
}
// DeleteUser 删除用户-批量
type DeleteUser struct {
UserIds []string `json:"user_ids" form:"user_ids" validate:"required" label:"用户id"`
}

View File

@ -1,9 +1,13 @@
package userResponse
import "hospital-admin-api/api/model"
import (
"hospital-admin-api/api/model"
"hospital-admin-api/config"
"strconv"
)
// GetUserPage 获取用户列表-分页
type GetUserPage struct {
// getUserPage 获取用户列表-分页
type getUserPage struct {
UserID string `json:"user_id"` // 主键id
Access string `json:"access"` // 账号
Status int `json:"status"` // 状态1:正常 2:审核中 3:审核失败)
@ -19,22 +23,123 @@ type GetUserPage struct {
PostID string `json:"post_id"` // 岗位id
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
Role *GetUserPageRole `json:"role"` // 角色
Dept *GetUserPageDept `json:"dept"` // 部门
Post *GetUserPagePost `json:"post"` // 岗位
Role *getUserPageRole `json:"role"` // 角色
Dept *getUserPageDept `json:"dept"` // 部门
Post *getUserPagePost `json:"post"` // 岗位
}
type GetUserPageRole struct {
type getUserPageRole struct {
RoleId string `json:"role_id"` // 角色id
RoleName string `json:"role_name"` // 角色名称
}
type GetUserPageDept struct {
type getUserPageDept struct {
DeptId string `json:"dept_id"` // 部门id
DeptName string `json:"dept_name"` // 部门名称
}
type GetUserPagePost struct {
type getUserPagePost struct {
PostId string `json:"post_id"` // 岗位id
PostName string `json:"post_name"` // 岗位名称
}
// getUser 用户详情
type getUser struct {
UserID string `json:"user_id"`
Access string `json:"access"`
Status int `json:"status"`
IsDeleted int `json:"is_deleted"`
IsDisabled int `json:"is_disabled"`
NickName string `json:"nick_name"`
Phone string `json:"phone"`
Avatar string `json:"avatar"`
Sex int `json:"sex"`
Email string `json:"email"`
RoleID string `json:"role_id"`
DeptID string `json:"dept_id"`
PostID string `json:"post_id"`
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetUserPageResponse 获取用户列表-分页
func GetUserPageResponse(adminUser []*model.AdminUser) []getUserPage {
// 处理返回值
getUserPageResponses := make([]getUserPage, len(adminUser))
if len(adminUser) > 0 {
for i, v := range adminUser {
var role *getUserPageRole
if v.Role != nil {
role = &getUserPageRole{
RoleId: strconv.FormatInt(v.Role.RoleId, 10),
RoleName: v.Role.RoleName,
}
}
var dept *getUserPageDept
if v.Dept != nil {
dept = &getUserPageDept{
DeptId: strconv.FormatInt(v.Dept.DeptId, 10),
DeptName: v.Dept.DeptName,
}
}
var post *getUserPagePost
if v.Post != nil {
post = &getUserPagePost{
PostId: strconv.FormatInt(v.Post.PostId, 10),
PostName: v.Post.PostName,
}
}
// 将原始结构体转换为新结构体
getUserPageResponse := getUserPage{
UserID: strconv.Itoa(int(v.UserID)),
Access: v.Access,
Status: v.Status,
IsDeleted: v.IsDeleted,
IsDisabled: v.IsDisabled,
NickName: v.NickName,
Phone: v.Phone,
Avatar: config.C.Oss.OssCustomDomainName + "/" + v.Avatar,
Sex: v.Sex,
Email: v.Email,
RoleID: strconv.Itoa(int(v.RoleID)),
DeptID: strconv.Itoa(int(v.DeptID)),
PostID: strconv.Itoa(int(v.PostID)),
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
Role: role,
Dept: dept,
Post: post,
}
// 将转换后的结构体添加到新切片中
getUserPageResponses[i] = getUserPageResponse
}
}
return getUserPageResponses
}
// GetUserResponse 用户详情
func GetUserResponse(adminUser *model.AdminUser) *getUser {
return &getUser{
UserID: strconv.FormatInt(adminUser.UserID, 10),
Access: adminUser.Access,
Status: adminUser.Status,
IsDeleted: adminUser.IsDeleted,
IsDisabled: adminUser.IsDisabled,
NickName: adminUser.NickName,
Phone: adminUser.Phone,
Avatar: config.C.Oss.OssCustomDomainName + "/" + adminUser.Avatar,
Sex: adminUser.Sex,
Email: adminUser.Email,
RoleID: strconv.FormatInt(adminUser.RoleID, 10),
DeptID: strconv.FormatInt(adminUser.DeptID, 10),
PostID: strconv.FormatInt(adminUser.PostID, 10),
CreatedAt: adminUser.CreatedAt,
UpdatedAt: adminUser.UpdatedAt,
}
}

View File

@ -122,10 +122,10 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 新增用户
userGroup.POST("", api.User.AddUser)
// 修改用户
userGroup.PUT("/:menu_id", api.User.GetUserPage)
// 用户详情
userGroup.GET("/:user_id", api.User.GetUser)
// 删除用户-批量
userGroup.DELETE("", api.User.GetUserPage)
userGroup.DELETE("", api.User.DeleteUser)
}
}

View File

@ -141,7 +141,7 @@ func (r *RoleService) AddRole(c *gin.Context, AddRoleRequest requests.AddRole) (
return false, errors.New("数据错误")
}
// 获取当前登陆用户数据
// 获取当前登陆用户角色数据
AdminRoleDao := dao.AdminRoleDao{}
adminRole, err := AdminRoleDao.GetAdminRoleFirstById(roleId)
if err != nil || adminRole == nil {
@ -149,7 +149,7 @@ func (r *RoleService) AddRole(c *gin.Context, AddRoleRequest requests.AddRole) (
}
if AddRoleRequest.IsAdmin == 1 && adminRole.IsAdmin == 0 {
return false, errors.New("您当前为普通用户,无法添加管理员用户")
return false, errors.New("您当前为普通用户,无法添加管理员角色")
}
AdminMenuDao := dao.AdminMenuDao{}

View File

@ -1,4 +1,204 @@
package service
type AdminUserService struct {
import (
"crypto/md5"
"encoding/hex"
"errors"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/model"
"hospital-admin-api/api/requests"
"hospital-admin-api/global"
"strconv"
)
type UserService struct {
}
// AddUser 新增用户
func (r *UserService) AddUser(c *gin.Context, AddUserRequest requests.AddUser) (bool, error) {
// 当前登陆用户id
loginUserId := c.GetInt64("UserId")
if loginUserId == 0 {
return false, errors.New("新增失败")
}
loginRoleId := c.GetInt64("RoleId")
if loginRoleId == 0 {
return false, errors.New("新增失败")
}
// 获取当前登陆用户角色数据
adminRoleDao := dao.AdminRoleDao{}
adminRole, err := adminRoleDao.GetAdminRoleFirstById(loginRoleId)
if err != nil || adminRole == nil {
return false, errors.New("非法操作")
}
if adminRole.IsAdmin == 0 {
return false, errors.New("您当前为普通用户,无法添加用户")
}
adminUserDao := dao.AdminUserDao{}
AdminDeptDao := dao.AdminDeptDao{}
AdminPostDao := dao.AdminPostDao{}
// 检测账号名
AdminUser, err := adminUserDao.GetAdminUserFirstByAccess(AddUserRequest.Access)
if AdminUser != nil {
return false, errors.New("账号名重复")
}
// 检测手机号
AdminUser, err = adminUserDao.GetAdminUserFirstByPhone(AddUserRequest.Phone)
if AdminUser != nil {
return false, errors.New("手机号重复")
}
// 检测角色
roleID, err := strconv.ParseInt(AddUserRequest.RoleID, 10, 64)
if err != nil {
return false, errors.New("角色错误")
}
adminRole, err = adminRoleDao.GetAdminRoleFirstById(roleID)
if err != nil || adminRole == nil {
return false, errors.New("角色错误")
}
// 检测部门
deptID, err := strconv.ParseInt(AddUserRequest.DeptID, 10, 64)
if err != nil {
return false, errors.New("部门错误")
}
adminDept, err := AdminDeptDao.GetAdminDeptFirstById(deptID)
if err != nil || adminDept == nil {
return false, errors.New("部门错误")
}
// 检测岗位
postID, err := strconv.ParseInt(AddUserRequest.PostID, 10, 64)
if err != nil {
return false, errors.New("岗位错误")
}
adminPost, err := AdminPostDao.GetAdminPostFirstById(postID)
if err != nil || adminPost == nil {
return false, errors.New("岗位错误")
}
// 处理密码
salt := uuid.New().String()
password := md5.Sum([]byte(AddUserRequest.Password + salt))
// 将哈希值转换为16进制字符串
passwordString := hex.EncodeToString(password[:])
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 新增用户
AdminUserModel := &model.AdminUser{
Access: AddUserRequest.Access,
Password: passwordString,
Salt: salt,
Status: AddUserRequest.Status,
IsDeleted: AddUserRequest.IsDeleted,
IsDisabled: AddUserRequest.IsDisabled,
NickName: AddUserRequest.NickName,
Phone: AddUserRequest.Phone,
Avatar: AddUserRequest.Avatar,
Sex: AddUserRequest.Sex,
Email: AddUserRequest.Email,
RoleID: roleID,
DeptID: deptID,
PostID: postID,
CreateBy: loginUserId,
}
adminUser, _ := adminUserDao.AddAdminUser(tx, AdminUserModel)
if adminUser == nil {
tx.Rollback()
return false, errors.New("新增失败")
}
tx.Commit()
return true, nil
}
// DeleteUser 删除用户-批量
func (r *UserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.DeleteUser) (bool, error) {
// 获取当前登陆用户数据
userId := c.GetInt64("UserId")
if userId == 0 {
return false, errors.New("数据错误")
}
AdminUserDao := dao.AdminUserDao{}
adminUser, err := AdminUserDao.GetAdminUserFirstById(userId)
if err != nil || adminUser == nil {
return false, errors.New("用户数据错误")
}
// 获取当前登陆用户角色数据
roleId := c.GetInt64("RoleId")
if roleId == 0 {
return false, errors.New("数据错误")
}
AdminRoleDao := dao.AdminRoleDao{}
adminRole, err := AdminRoleDao.GetAdminRoleFirstById(roleId)
if err != nil || adminRole == nil {
return false, errors.New("非法操作")
}
if adminRole.IsAdmin == 0 {
return false, errors.New("暂无权限,请联系管理员删除")
}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
for _, v := range DeleteUserRequest.UserIds {
// 将字符串转换为int64类型
v, err := strconv.ParseInt(v, 10, 64)
if err != nil {
return false, errors.New("菜单错误")
}
if v == adminUser.UserID {
tx.Rollback()
return false, errors.New("非法操作,请勿删除自己")
}
// 检测删除用户
adminUser, err := AdminUserDao.GetAdminUserFirstById(userId)
if err != nil || adminUser == nil {
tx.Rollback()
return false, errors.New("删除失败")
}
// 删除用户
err = AdminUserDao.DeleteAdminUserById(tx, v)
if err != nil {
tx.Rollback()
return false, errors.New("删除失败")
}
}
tx.Commit()
return true, nil
}