2023-06-30 17:35:46 +08:00

118 lines
2.4 KiB
Go

package service
import (
"errors"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/model"
"hospital-admin-api/api/requests"
"hospital-admin-api/global"
"strconv"
)
type PostService struct {
}
// AddPost 新增岗位
func (r *PostService) AddPost(addPostRequest requests.AddPost) (bool, error) {
adminPostDao := dao.AdminPostDao{}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 新增岗位
adminPostModel := &model.AdminPost{
PostName: addPostRequest.PostName,
PostStatus: 1,
}
adminMenu, _ := adminPostDao.AddAdminPost(tx, adminPostModel)
if adminMenu == nil {
tx.Rollback()
return false, errors.New("新增失败")
}
tx.Commit()
return true, nil
}
// DeletePost 删除岗位-批量
func (r *PostService) DeletePost(deletePostRequest requests.DeletePost) (bool, error) {
adminPostDao := dao.AdminPostDao{}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
for _, v := range deletePostRequest.PostIds {
// 将字符串转换为int64类型
v, err := strconv.ParseInt(v, 10, 64)
if err != nil {
tx.Rollback()
return false, errors.New("菜单错误")
}
// 检测删除岗位
adminPost, err := adminPostDao.GetAdminPostById(v)
if err != nil || adminPost == nil {
tx.Rollback()
return false, errors.New("删除失败")
}
// 修改岗位为删除
data := make(map[string]interface{})
data["post_status"] = 2
err = adminPostDao.EditAdminPostById(tx, v, data)
if err != nil {
tx.Rollback()
return false, errors.New("删除失败")
}
}
tx.Commit()
return true, nil
}
// PutPost 修改岗位
func (r *PostService) PutPost(requestPostId int64, putPostRequest requests.PutPost) (bool, error) {
adminPostDao := dao.AdminPostDao{}
// 获取需修改岗位数据
adminPost, err := adminPostDao.GetAdminPostById(requestPostId)
if err != nil || adminPost == nil {
return false, errors.New("岗位数据错误")
}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 修改岗位
data := make(map[string]interface{})
data["post_name"] = putPostRequest.PostName
data["post_status"] = putPostRequest.PostStatus
err = adminPostDao.EditAdminPostById(tx, requestPostId, data)
if err != nil {
tx.Rollback()
return false, errors.New("修改失败")
}
tx.Commit()
return true, nil
}