Skip to content

数字底座 SDK

本文档介绍后端工程引入数字底座 SDK,进行应用的开发。

maven pom.xml 修改

添加私服仓库

xml
<repositories>
    <repository>
        <id>y9-internet-repo</id>
        <url>https://svn.youshengyun.com:9900/nexus/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <!-- <updatePolicy>always</updatePolicy> -->
            <!-- always,daily(default),interval:XXX,never -->
        </snapshots>
    </repository>
</repositories>

添加数字底座接口依赖包

xml
    <dependency>
        <groupId>net.risesoft</groupId>
        <artifactId>risenet-y9boot-api-feignclient-platform</artifactId>
        <version>[最新版本]</version>
    </dependency>

修改属性文件 application.yml

properties
#数字底座后端服务地址,调用数字底座接口信息时会用到
y9.service.org.directUrl=http://localhost:7055
yaml
y9:
    service:
        org:
            #数字底座后端服务地址,调用数字底座接口信息时会用到
            directUrl: http://localhost:7055

接口使用

本文档中引入的 jar 包的数字底座 API 通过 openfeign 实现调用,且相应 API 的实例已经注册到 Spring 容器中,所以可直接通过注入相应的 API 调用接口

java
package com.example;

import java.util.ArrayList;
import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import net.risesoft.api.platform.org.OrgUnitApi;
import net.risesoft.api.platform.org.OrganizationApi;
import net.risesoft.api.platform.permission.PersonResourceApi;
import net.risesoft.api.platform.resource.AppApi;
import net.risesoft.enums.platform.AuthorityEnum;
import net.risesoft.enums.platform.OrgTreeTypeEnum;
import net.risesoft.log.annotation.RiseLog;
import net.risesoft.model.platform.App;
import net.risesoft.model.platform.Menu;
import net.risesoft.model.platform.OrgUnit;
import net.risesoft.model.platform.Organization;
import net.risesoft.model.user.UserInfo;
import net.risesoft.pojo.Y9Result;
import net.risesoft.y9.Y9Context;
import net.risesoft.y9.Y9LoginUserHolder;

@RestController
public class TestController {

    private final OrgUnitApi orgUnitApi;
    private final OrganizationApi organizationApi;
    private final AppApi appApi;
    private final PersonResourceApi personResourceApi;

    public TestController(OrgUnitApi orgUnitApi, OrganizationApi organizationApi, AppApi appApi,
        PersonResourceApi personResourceApi) {
        this.orgUnitApi = orgUnitApi;
        this.organizationApi = organizationApi;
        this.appApi = appApi;
        this.personResourceApi = personResourceApi;
    }

    public void demo() {
        // 获取所有组织机构 组织机构树第一层
        List<Organization> organizationList =
            organizationApi.listByType(Y9LoginUserHolder.getTenantId(), false).getData();
        for (Organization organization : organizationList) {
            // 组织机构树第二层
            List<OrgUnit> orgUnitList1 = orgUnitApi
                .getSubTree(Y9LoginUserHolder.getTenantId(), organization.getId(), OrgTreeTypeEnum.TREE_TYPE_ORG)
                .getData();
            // 组织岗位树第二层
            List<OrgUnit> orgUnitList2 = orgUnitApi
                .getSubTree(Y9LoginUserHolder.getTenantId(), organization.getId(), OrgTreeTypeEnum.TREE_TYPE_POSITION)
                .getData();
        }

    }

    /**
     * 获取当前登陆用户有权限的菜单
     *
     * @return
     */
    @GetMapping("/getMenus")
    @RiseLog(operationName = "获取当前登陆用户有权限的菜单", moduleName = "日志测试系统")
    public Y9Result<List<Menu>> getMenus() {
        // 租户id
        String tenantId = Y9LoginUserHolder.getTenantId();
        // 用户id
        String personId = Y9LoginUserHolder.getPersonId();
        // 当前系统所有应用
        List<App> appList = appApi.listBySystemName(Y9Context.getSystemName()).getData();
        // 获取当前系统第一个应用,当前用户有权限的菜单
        List<Menu> menuList = new ArrayList<>();
        if (!appList.isEmpty()) {
            menuList = personResourceApi.listSubMenus(tenantId, personId, AuthorityEnum.BROWSE, appList.get(0).getId())
                .getData();
        }
        return Y9Result.success(menuList);
    }

    /**
     * 获取当前登陆用户父节点信息(可能为组织机构或部门)
     *
     * @return
     */
    @GetMapping("/parent")
    @RiseLog(operationName = "获取当前登陆用户父节点信息", moduleName = "日志测试系统")
    public Y9Result<OrgUnit> getParent() {
        // 租户id
        String tenantId = Y9LoginUserHolder.getTenantId();
        // 父节点id
        String deptId = Y9LoginUserHolder.getDeptId();
        return Y9Result.success(orgUnitApi.getOrgUnit(tenantId, deptId).getData());
    }

    /**
     * 获取当前登录用户信息
     *
     * @return
     */
    @GetMapping("/userInfo")
    public Y9Result<UserInfo> getUserInfo() {
        return Y9Result.success(Y9LoginUserHolder.getUserInfo());
    }

}

示例代码

码云地址:https://gitee.com/risesoft-y9/y9-core

该示例代码路径为:https://gitee.com/risesoft-y9/y9-core/tree/main/y9-digitalbase-example/risenet-y9demo-kernel-api

其中 backend-demo 为后端示例工程,frontend-vue3-demo 为配合后端示例工程对应的前端示例页面。

Released under the GPL-3.0 License.