fonchain-fiee/pkg/service/auth/department/department_v2.go

373 lines
7.6 KiB
Go
Raw Normal View History

2025-02-19 06:24:15 +00:00
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
}