httplib_user_service_gateway.go 4.7 KB
package service_gateway

import (
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/constant"
	"strconv"
	"strings"
	"time"
)

type HttplibUserServiceGateway struct {
	httplibBaseServiceGateway
}

// GetUser 获取用户
func (serviceGateway *HttplibUserServiceGateway) GetUser(companyId int64, orgId int64, uid int64) (map[string]interface{}, error) {
	companyIdStr := strconv.FormatInt(companyId, 10)
	url := strings.Join([]string{serviceGateway.baseURL, "companies/" + companyIdStr + "/users/get-user"}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["uid"] = uid
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return nil, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return nil, err2
	}
	data, err := serviceGateway.responseHandle(response)
	return data, err
}

// GetCompany 获取公司信息
func (serviceGateway *HttplibUserServiceGateway) GetCompany(companyId int64) (map[string]interface{}, error) {
	companyIdStr := strconv.FormatInt(companyId, 10)
	url := strings.Join([]string{serviceGateway.baseURL, "companies/" + companyIdStr}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["companyId"] = companyId
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return nil, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return nil, err2
	}
	data, err := serviceGateway.responseHandle(response)
	return data, err
}

// GetDepartment 获取部门信息
func (serviceGateway *HttplibUserServiceGateway) GetDepartment(companyId int64, departmentId int64) (map[string]interface{}, error) {
	companyIdStr := strconv.FormatInt(companyId, 10)
	url := strings.Join([]string{serviceGateway.baseURL, "companies/" + companyIdStr}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["departmentId"] = departmentId
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return nil, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return nil, err2
	}
	data, err := serviceGateway.responseHandle(response)
	return data, err
}

// GetOrganization 获取组织信息
func (serviceGateway *HttplibUserServiceGateway) GetOrganization(companyId int64, organizationId int64) (map[string]interface{}, error) {
	companyIdStr := strconv.FormatInt(companyId, 10)
	organizationIdStr := strconv.FormatInt(organizationId, 10)
	url := strings.Join([]string{serviceGateway.baseURL, "companies/" + companyIdStr + "/orgs/" + organizationIdStr}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["orgId"] = organizationId
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return nil, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return nil, err2
	}
	data, err := serviceGateway.responseHandle(response)
	return data, err
}

// UserInMenu 判断用户是否具有模块权限
func (serviceGateway *HttplibUserServiceGateway) UserInMenu(companyId int64, userId int64, menuCode string) (bool, error) {
	url := strings.Join([]string{serviceGateway.baseURL, "users/menu"}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["code"] = menuCode
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return false, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return false, err2
	}
	data, err := serviceGateway.responseHandle(response)
	if data["code"] == 200 {
		return true, nil
	}
	return false, err
}

// UserInOrganization 判断用户是否存在组织内
func (serviceGateway *HttplibUserServiceGateway) UserInOrganization(companyId int64, orgId int64, userId int64) (bool, error) {
	url := strings.Join([]string{serviceGateway.baseURL, "users/menu"}, "/")
	request := serviceGateway.createRequest(url, "get")
	options := make(map[string]interface{})
	options["orgId"] = orgId
	_, err1 := request.JSONBody(options)
	if err1 != nil {
		return false, err1
	}
	response := make(map[string]interface{})
	err2 := request.ToJSON(&response)
	if err2 != nil {
		return false, err2
	}
	data, err := serviceGateway.responseHandle(response)
	if data["code"] == 200 {
		return true, nil
	}
	return false, err
}

func NewHttplibUserServiceGateway() *HttplibUserServiceGateway {
	return &HttplibUserServiceGateway{
		httplibBaseServiceGateway: httplibBaseServiceGateway{
			baseURL:          constant.USER_MODULE_HOST,
			connectTimeout:   100 * time.Second,
			readWriteTimeout: 30 * time.Second,
		},
	}
}