cutego/modules/core/api/v1/post_api.go

138 lines
3.1 KiB
Go

package v1
import (
"cutego/modules/core/api/v1/request"
"cutego/modules/core/dataobject"
"cutego/modules/core/service"
"cutego/pkg/excels"
"cutego/pkg/file"
"cutego/pkg/page"
"cutego/pkg/resp"
"cutego/pkg/util"
"github.com/druidcaesa/gotool"
"github.com/gin-gonic/gin"
"strconv"
"strings"
"time"
)
type PostApi struct {
postService service.PostService
userPostService service.UserPostService
}
// List 查询刚问分页数据
func (a PostApi) List(c *gin.Context) {
query := request.PostQuery{}
if c.Bind(&query) != nil {
resp.ParamError(c)
return
}
list, i := a.postService.FindPage(query)
resp.OK(c, page.Page{
List: list,
Total: i,
Size: query.PageSize,
})
}
// Add 新增岗位
func (a PostApi) Add(c *gin.Context) {
post := dataobject.SysPost{}
if c.Bind(&post) != nil {
resp.ParamError(c)
return
}
// 校验岗位名称是否存在
if a.postService.CheckPostNameUnique(post) {
resp.Error(c, "新增岗位'"+post.PostName+"'失败, 岗位名称已存在")
return
}
// 检验岗位编码是否存在
if a.postService.CheckPostCodeUnique(post) {
resp.Error(c, "新增岗位'"+post.PostCode+"'失败, 岗位编码已存在")
return
}
post.CreateBy = util.GetUserInfo(c).UserName
if a.postService.Save(post) {
resp.OK(c)
} else {
resp.Error(c)
}
}
// Get 根据岗位编号获取详细信息
func (a PostApi) Get(c *gin.Context) {
param := c.Param("postId")
postId, _ := strconv.ParseInt(param, 10, 64)
resp.OK(c, a.postService.GetPostById(postId))
}
// Delete 删除岗位数据
func (a PostApi) Delete(c *gin.Context) {
// 获取postId
param := c.Param("postId")
list := make([]int64, 0)
if gotool.StrUtils.HasNotEmpty(param) {
strs := strings.Split(param, ",")
for _, str := range strs {
postId, _ := strconv.ParseInt(str, 10, 64)
list = append(list, postId)
}
}
// 判断是否可以删除
postId := a.userPostService.CountUserPostById(list)
if postId > 0 {
post := a.postService.GetPostById(postId)
resp.Error(c, post.PostName+"岗位已分配, 不允许删除")
return
}
if a.postService.Remove(list) {
resp.OK(c)
} else {
resp.Error(c)
}
}
// Edit 修改岗位数据接口
func (a PostApi) Edit(c *gin.Context) {
post := dataobject.SysPost{}
if c.Bind(&post) != nil {
resp.ParamError(c)
return
}
// 校验岗位名称是否存在
if a.postService.CheckPostNameUnique(post) {
resp.Error(c, "修改岗位'"+post.PostName+"'失败, 岗位名称已存在")
return
}
// 检验岗位编码是否存在
if a.postService.CheckPostCodeUnique(post) {
resp.Error(c, "修改岗位'"+post.PostCode+"'失败, 岗位编码已存在")
return
}
post.UpdateBy = util.GetUserInfo(c).UserName
post.UpdateTime = time.Now()
if a.postService.Edit(post) {
resp.OK(c)
} else {
resp.Error(c)
}
}
// Export 导出excel
func (a PostApi) Export(c *gin.Context) {
query := request.PostQuery{}
if c.Bind(&query) != nil {
resp.ParamError(c)
return
}
list, _ := a.postService.FindPage(query)
excelList := make([]interface{}, 0)
for _, post := range *list {
excelList = append(excelList, post)
}
_, files := excels.ExportExcel(excelList, "岗位数据表")
file.DownloadExcel(c, files)
}