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 }