373 lines
7.6 KiB
Go
373 lines
7.6 KiB
Go
|
package department
|
|||
|
|
|||
|
import (
|
|||
|
"errors"
|
|||
|
"fmt"
|
|||
|
api "github.com/fonchain_enterprise/fonchain-main/api/department"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/position"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/logic/auth"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/login"
|
|||
|
v2 "github.com/fonchain_enterprise/fonchain-main/pkg/model/vo/v2"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/vo/v2/department"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
|
|||
|
"github.com/gin-gonic/gin"
|
|||
|
"github.com/gin-gonic/gin/binding"
|
|||
|
"github.com/jinzhu/copier"
|
|||
|
"strconv"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
func CreateV2(c *gin.Context) {
|
|||
|
var req api.CreateRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
fmt.Println(err)
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.DepartmentCode = "normal"
|
|||
|
res, err := service.DepartmentProvider.Create(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
detailReq := api.DetailRequest{
|
|||
|
ID: int64(res.ID),
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println(res.ID)
|
|||
|
detailRes, err := service.DepartmentProvider.Detail(c, &detailReq)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
fmt.Println(detailRes.LevelPath)
|
|||
|
newObj := new(department.DetailResponse)
|
|||
|
|
|||
|
err = copier.Copy(&newObj, detailRes)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println(newObj.LevelPath)
|
|||
|
|
|||
|
newObj.LevelPathList, err = formatData(newObj.LevelPath)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, newObj)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func DetailV2(c *gin.Context) {
|
|||
|
var req api.DetailRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.Detail(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
newObj := new(department.DetailResponse)
|
|||
|
|
|||
|
err = copier.Copy(&newObj, res)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, newObj)
|
|||
|
}
|
|||
|
|
|||
|
func UpdateV2(c *gin.Context) {
|
|||
|
var req api.CreateRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.Update(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
func DirectBoss(c *gin.Context) {
|
|||
|
var req api.MyDirectLeadersRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if req.DepartmentId == 0 || req.UserId == 0 {
|
|||
|
service.Error(c, e.Error, errors.New("请选择部门"))
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.MyDirectLeaders(c, &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
func LevelBoss(c *gin.Context) {
|
|||
|
var req api.MyBossesReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if req.DepartmentId == 0 || req.UserId == 0 {
|
|||
|
service.Error(c, e.Error, errors.New("请选择部门"))
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
userInfo, err := login.GetUserInfoFromCV2(c)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.UserId = uint32(userInfo.ID)
|
|||
|
*/
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.MyBosses(c, &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
func ListByAuth(c *gin.Context) {
|
|||
|
var req api.DepartmentBossesByAuthReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.DepartmentProvider.DepartmentBossesByAuth(c, &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
func UnBind(c *gin.Context) {
|
|||
|
var req api.CoBindRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.DepartmentProvider.UnBindPositions(c, &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// Bind 组织架构树
|
|||
|
func Bind(c *gin.Context) {
|
|||
|
var req api.CoBindRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.DepartmentProvider.BindPositions(c, &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// FilterTree 根据个人权限的组织架构树
|
|||
|
func FilterTree(c *gin.Context) {
|
|||
|
|
|||
|
userInfo, err := login.GetUserInfoFromCV2(c)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//查看本人所在的部门
|
|||
|
res, err := auth.GetMyFilterCompanyAuthTree(uint32(userInfo.ID), c.Request.URL.Path)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// MyTree 根据个人权限的组织架构树
|
|||
|
func MyTree(c *gin.Context) {
|
|||
|
|
|||
|
userInfo, err := login.GetUserInfoFromCV2(c)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//查看本人所在的部门
|
|||
|
res, err := auth.GetMyCompanyAuthTree(uint32(userInfo.ID))
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// AllTreeWithPosition 组织架构树
|
|||
|
func AllTreeWithPosition(c *gin.Context) {
|
|||
|
res, err := auth.GetAllCompanyAuthTreeWithPosition()
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// AllTree 组织架构树
|
|||
|
func AllTree(c *gin.Context) {
|
|||
|
res, err := auth.GetAllCompanyAuthTree()
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
func BaseListV2(c *gin.Context) {
|
|||
|
var req api.BaseListV2Request
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.BaseListV2(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func DetailsV2(c *gin.Context) {
|
|||
|
var req api.DetailsRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.DepartmentProvider.Details(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
newObj := new(department.DetailsResponse)
|
|||
|
|
|||
|
err = copier.Copy(&newObj, res)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, newObj)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func PositionList(c *gin.Context) {
|
|||
|
var req position.ListRequest
|
|||
|
fmt.Println("1-1-1----")
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println("1----")
|
|||
|
res, err := service.PositionProvider.List(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
newObj := new(v2.ListResponse)
|
|||
|
|
|||
|
err = copier.Copy(&newObj, res)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, newObj)
|
|||
|
}
|
|||
|
|
|||
|
func formatData(input string) ([]uint32, error) {
|
|||
|
if input == "" {
|
|||
|
return nil, nil
|
|||
|
}
|
|||
|
fmt.Println("1--------", input)
|
|||
|
// 移除字符串前后的下划线
|
|||
|
trimmedInput := strings.Trim(input, "_")
|
|||
|
|
|||
|
// 使用下划线分割字符串
|
|||
|
stringParts := strings.Split(trimmedInput, "_")
|
|||
|
|
|||
|
fmt.Println("1-------", stringParts)
|
|||
|
|
|||
|
// 创建一个int类型的slice,用于存放转换后的数字
|
|||
|
var intParts []uint32
|
|||
|
|
|||
|
// 遍历字符串数组,并将每个字符串转换为int类型
|
|||
|
for _, part := range stringParts {
|
|||
|
intValue, err := strconv.Atoi(part)
|
|||
|
if err != nil {
|
|||
|
// 如果转换出错,则返回错误
|
|||
|
return nil, err
|
|||
|
}
|
|||
|
// 将转换后的int值添加到结果数组中
|
|||
|
intParts = append(intParts, uint32(intValue))
|
|||
|
}
|
|||
|
|
|||
|
return intParts, nil
|
|||
|
}
|