module_org.go 8.5 KB
package allied_creation_user

import (
	"encoding/json"
	"fmt"
	"strconv"

	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log"
)

// Org 创建组织
func (gateway HttplibAlliedCreationUser) OrgCreate(param ReqOrgCreate) (*DataOrgCreate, error) {
	url := gateway.baseUrL + "/org"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:创建组织。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求创建组织失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取创建组织失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:创建组织。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析创建组织:%w", err)
	}
	var data DataOrgCreate
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//OrgUpdate 更新组织
func (gateway HttplibAlliedCreationUser) OrgUpdate(param ReqOrgUpdate) (*DataOrgUpdate, error) {
	url := gateway.baseUrL + "/org/" + strconv.FormatInt(param.OrgId, 10)
	method := "put"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:更新组织。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求更新组织失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取更新组织失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:更新组织。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析更新组织:%w", err)
	}
	var data DataOrgUpdate
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// Org[orgId} 移除组织
func (gateway HttplibAlliedCreationUser) OrgRemove(param ReqOrgRemove) (*DataOrgRemove, error) {
	url := gateway.baseUrL + "/org/" + strconv.FormatInt(param.OrgId, 10)
	method := "delete"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:移除组织。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求移除组织失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取移除组织失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:移除组织。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析移除组织:%w", err)
	}
	var data DataOrgRemove
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// Org[orgId}Sub-department 获取组织的子部门(通用部门列表使用)
func (gateway HttplibAlliedCreationUser) OrgGetSubDepartment(param ReqOrgGetSubDepartment) (*DataOrgGetSubDepartment, error) {
	url := gateway.baseUrL + "/org/" + strconv.FormatInt(param.OrgId, 10) + "/sub-department"
	method := "get"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:获取组织的子部门(通用部门列表使用)。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求获取组织的子部门(通用部门列表使用)失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取获取组织的子部门(通用部门列表使用)失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:获取组织的子部门(通用部门列表使用)。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析获取组织的子部门(通用部门列表使用):%w", err)
	}
	var data DataOrgGetSubDepartment
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// OrgEnable 设置组织启用状态
func (gateway HttplibAlliedCreationUser) OrgEnable(param ReqOrgEnable) (*DataOrgEnable, error) {
	url := gateway.baseUrL + "/org/enable"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:设置组织启用状态。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求设置组织启用状态失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取设置组织启用状态失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:设置组织启用状态。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析设置组织启用状态:%w", err)
	}
	var data DataOrgEnable
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// Org[orgId} 返回组织
func (gateway HttplibAlliedCreationUser) OrgGet(param ReqOrgGet) (*DataOrgGet, error) {
	url := gateway.baseUrL + "/org/" + strconv.Itoa(param.OrgId)
	method := "get"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:返回组织。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求返回组织失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取返回组织失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:返回组织。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析返回组织:%w", err)
	}
	var data DataOrgGet
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// OrgSearch 返回组织列表
func (gateway HttplibAlliedCreationUser) OrgSearch(param ReqOrgSearch) (*DataOrgSearch, error) {
	url := gateway.baseUrL + "/org/search"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:返回组织列表。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求返回组织列表失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取返回组织列表失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:返回组织列表。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析返回组织列表:%w", err)
	}
	var data DataOrgSearch
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

func (gateway HttplibAlliedCreationUser) OrgBatchAdd(param ReqBatchAddOrg) (*DataImportResponse, error) {
	url := fmt.Sprintf("%s%s", gateway.baseUrL, "/org/batch-add")
	method := "post"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	log.Logger.Debug("向用户模块请求数据:批量添加用户。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求批量添加用户失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取批量添加用户失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:批量添加用户。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析批量添加用户:%w", err)
	}
	var data DataImportResponse
	err = gateway.GetResponseData(result, &data)
	return &data, err
}