新增用户相关接口
This commit is contained in:
parent
966057fa5b
commit
98aa3263bb
@ -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
18
api/dao/adminDept.go
Normal 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
18
api/dao/adminPost.go
Normal 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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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"` // 岗位
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"`
|
||||
}
|
||||
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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{}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user