门户提供的API

1 组织

1.1 维护组织和人员

uaa提供一个api:postOrgs,实现组织和人员的增删改

  • URL

/entry/uaa/org/postOrgs

  • 请求方式

POST

  • 参数

      {
          "orgFNameSeparator": "/",           //全路径名称分隔符,默认为/,可在参数配置中配置
          "data": {
              "type": "delta",                //取值范围: 增量(delta), 全量(all)
              "users": [                      //用户信息
                  {
                      "state": "upsert",      //当type=delta时生效,  delete/upsert。全量时不设置
                      "id": "",               //主键
                      "orgs":[ "",""],        //所属组织的id列表,和addOrgs/deleteOrgs不能同时出现
                      "addOrgs": [],          //增加的组织id列表
                      "deleteOrgs": [],       //删除的组织id列表
                      "mainOrg": "",          //主组织的id 
                      "created": null,        //创建时间
                      "username": "",         //登录用户名
                      "name": "",             //用户中文名称
                      "verified": 1,          //账号状态
                      "active": 1,            //用户状态
                      "email": "",            //email
                      "phoneNumber": "",      //手机号
                      "address":"",           //办公地址
                      "position": "",         //职位
                      "description": "",      //备注
                      "hiredate": "2021-07-21 00:00:00",          //入职时间
                      "roles": ["", ""],                          //人员的角色id列表
                      "addRoles": ["", ""],                       //人员新增加的角色id列表
                      "deleteRoles": ["", ""],                    //删除的人员角色id列表
                      "orgRoles":[{"orgid": ["roleid"]}],         //人员成员的角色id列表
                      "addOrgRoles": [{"orgid": ["roleid"]}],     //人员成员新增加的角色id列表
                      "deleteOrgRoles": [{"orgid": ["roleid"]}],  //删除的人员成员角色id列表
                      "sortNumber":  1,       //排序号
                      "type": "org",          //org代表组织内人员,sys代表system,外部人员无需设置
                      "manageOrgs": [{        //人员或人员成员的管理组织信息
                          "role": "roleid",   //角色id,主管的角色id是director
                          "org"; "orgid",     //管理者是人员时设置为空,管理者是人员成员时设置为父节点的id
                          "managedOrg": "orgid" //被管理组织的id
                      }],
                      "addManageOrgs": [],    //内容同manageOrgs,表示新增加的管理组织信息
                      "deleteManageOrgs": [], //内容同manageOrgs,表示要删除的管理组织信息
                      "extend": {}            //扩展表中的字段
    
                  }
              ],
              "orgs": [
                  {
                      "state": "upsert",      //当type=delta时生效,  delete/upsert,全量时不设置
                      "id": "",               //组织id
                      "parentID": null,       //父组织id
                      "name": "",             //组织名称
                      "code": "",             //组织编码
                      "type": "",             //组织类型:部门(dpt),机构(ogn),岗位(pos)
                      "active": 1,            //状态
                      "seq": 1,               //序号
                      "roles": ["", ""],      //拥有的角色id列表;
                      "addRoles": ["", ""],   //新增加的角色id列表
                      "deleteRoles": ["", ""],//删除的角色id列表
                      "manageOrgs": [{        //组织的管理组织信息
                          "role": "roleid",   //角色id,主管的角色id是director
                          "managedOrg": "orgid" //被管理组织的id
                      }],
                      "addManageOrgs": [],    //内容同manageOrgs,表示新增加的管理组织信息
                      "deleteManageOrgs": [], //内容同manageOrgs,表示要删除的管理组织信息
                      "extend": {}            //扩展表中的字段
                  }
              ] 
          }
      }
    
  • 案例

js调用api

    Model.prototype.postOrgs=function((orgs,users){
        var params = {
            "data": {
                "type": "delta",                    
                "orgs": orgs,
                "users": users
            }
        };
        var dfd = $.Deferred();
        $.ajax({
            method : "POST",
            url : "/entry/uaa/org/postOrgs",
            headers : {
                "X-Request-Service-Name" : "*",
                "Content-type" : "application/json"
            },
            data : JSON.stringify(params)
        }).then(function(data) {
            if(data.success){
                dfd.resolve(data);
            }else{
                dfd.reject(data.msg);
            }
        }, function(error) {
            dfd.reject(error);
        });
        return dfd.promise();        
    }

java调用api

public void postOrgs(JSONArray orgs,JSONArray users){
    JSONObject dataObj = new JSONObject();
    dataObj.put("orgs", orgs);
    dataObj.put("users", users);
    dataObj.put("type", "delta");
    JSONObject paramObj = new JSONObject();
    paramObj.put("data", dataObj);

    JSONObject ret = ServiceUtil.post(SpringWebUtil.getRequest(),"entry","/uaa/org/postOrgs",paramObj);
    if(!ret.getBooleanValue("success")) {
        throw new RuntimeException(ret.getString("msg"));
    }
}

添加/修改一个组织

    var orgs = [{
            "id": orgData.getValue("id") || OpmUtils.createOpmUUID(),
            "code" : orgData.getValue("code"),
            "name" : orgData.getValue("name"),
            "type" : orgData.getValue("type"),               
            "active" : orgData.getValue("active"),               
            "parentID": this.params.parentRow ? this.params.parentRow.val("id") : ""
    }]; 
    this.postOrgs(orgs).then(function(){
        justep.Util.hint("保存成功"});
    },function(error){
        justep.Util.hint(error,{"type":"error"});
    })

删除多个组织

    var orgs = [];
    $.each(rows, function(i, row) {
        var id = row.val("id");
        orgs.push({"state": "delete","id":id,"type":row.val("type")});
    });
    OpmUtils.postOrgs(orgs).then(function(){
        justep.Util.hint("删除成功");
    }, function(error) {
        justep.Util.hint(error,{"type":"error"});
    });

添加/修改一个人员

    var orgs = [{
        "id": parentID,            
        "code": parentCode,        
        "name": personData.getValue("posName"),            
        "type": "pos",
        "parentID": deptID,
        "addRoles": [posID]
    }];         

    var users = [{
        "id" : personData.getValue("id"),
        "username" : personData.getValue("username"),
        "name" : personData.getValue("name"),
        "phoneNumber" : personData.getValue("phoneNumber"),
        "email" : personData.getValue("email"),
        "active" : personData.getValue("active"),
        "verified" : personData.getValue("verified"),
        "address" : personData.getValue("data9"),//地址
        "position" : personData.getValue("data10"),//职位
        "description" : personData.getValue("description"),//备注
        "data15" : personData.getValue("data15"),//性别
        "hiredate" : personData.getValue("data18"),//入职时间
        "avatarUrl" : personData.getValue("avatarUrl"),//头像
        "signature" : personData.getValue("signature"),//电子签名
        "idcard" : personData.getValue("idcard")//身份证号
    }];
    if(this.params.userType!="external"){//组织内用户
        users[0].mainOrg = parentID;
        users[0].type = "org";
    }
    if(this.comp("configData").getValue("useUserSortNumber")==1){//人员序号
        users[0].sortNumber = personData.getValue("sortNumber");
    }
    this.postOrgs(orgs,users).then(function(){
        justep.Util.hint("保存成功"});
    },function(error){
        justep.Util.hint("保存失败!"+error,{"type":"error"});   
    })

删除多个人员

    var users = [];
    var rows = self.comp("personTable").getCheckeds();
    $.each(rows, function(i, row){
        var id = row.val("id");
        users.push({"state": "delete","id":id});
    });
    this.postOrgs(null,users));

1.2 用户过期锁定

在统一通用配置的组织配置中,可以配置注册用户有效期、未登录账号冻结期限; 在统一通用配置的密码配置中,可以配置密码有效期。

门户opm服务模块的组织管理服务提供一个api:用户过期锁定。读取这三个配置项,根据设定的天数,将用户表中的用户状态active设置为0,密码必须修改passwd_change_required设置为1.

  • URL

/entry/opm/orgmanager/lockoverdueusers

  • 请求方式

POST

2 角色

2.1 获取拥有某个角色的组织

权限组件authorize提供一个api,获取拥有某个角色的组织

  • URL

/entry/authorize/roles/code/角色code/subjects?direct=true&sort=description,asc

  • 请求方式

GET

  • 参数

url中的角色code

  • 返回值
    [
        {
            "id": ,             //授权记录id
            "code": ,           //授权主体id,授权到组织,则为组织id,授权到人员成员,则为/父组织id/人员id
            "name": ,           //授权主体code,对应组织和人员的code
            "description": ,    //授权主体fname,对应组织和人员的fname
            "role": {
                "id": "modelAdmin",     //角色id
                "code": "modelAdmin",   //角色code
                "name": "模型管理员",    //角色名称
                "parentRoleCodes": "",  //父角色code,多个父角色使用逗号分隔
                "parentRoleNames": "",  //父角色名称,多个父角色使用逗号分隔
            },
            "roleId": "modelAdmin"      //角色id
        }
    ]
  • 案例

获取拥有模型管理员角色的组织,模型管理员角色的code为modelAdmin

/entry/authorize/roles/code/modelAdmin/subjects?direct=true&sort=description,asc

[
    {
        "id": "7552a46b9c0e4f83afe5b5476035cfc2",
        "code": "/9ebd043d-ca11-4db9-afda-f649f1b0a3f1/62d8f697-d307-4e9d-8399-eff9fba64c41",
        "name": "t13804070003",
        "description": "/设计院/数字化中心/G3",
        "role": {
            "id": "modelAdmin",
            "code": "modelAdmin",
            "name": "模型管理员",
            "parentRoleCodes": "",
            "parentRoleNames": "",
        },
        "roleId": "modelAdmin"
    },
    {
        "id": "682a70f79ce74c8197a15e926154c2e0",
        "code": "/f15c6ab8-9355-4967-866a-7d416578ac37/0cbc85dc-7a42-427b-8c65-a212665983fa",
        "name": "138",
        "description": "/设计院/设计部/模管一",
        "role": {
            "id": "modelAdmin",
            "code": "modelAdmin",
            "name": "模型管理员",
            "parentRoleCodes": "",
            "parentRoleNames": "",
        },
        "roleId": "modelAdmin"
    }
]

2.2 获取某个组织下拥有某个角色的人员

门户opm服务模块的组织权限服务提供一个api,获取某个组织下拥有某个角色的人员

  • URL

/entry/opm/orgauth/queryorghasrole?roleId=&orgFid=

  • 请求方式

GET

  • 参数

roleId:角色的id orgFid:组织的fid

  • 返回值

返回人员的id、姓名、全路径id、全路径名称和全路径编码的JSON数组

    [
        {
            "id": "",
            "name": "",
            "fid": "",
            "fname": "",
            "fcode": ""
        }
    ]
  • 案例

获取开发部下拥有合同审批角色的人员。开发部的fid为/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt,合同审批角色的id为oIFgHHe338T3G1pMIDe

/entry/opm/orgauth/queryorghasrole?roleId=oIFgHHe338T3G1pMIDe&orgFid=/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt

[
    {
        "id": "oIzH99633STExJZmcv6",
        "name": "a3",
        "fid": "/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt/oNyGkqQ33Bgprm0H31G.pos/oIzH99633STExJZmcv6.psm",
        "fname": "/起步/开发部/经理/a3",
        "fcode": "/oDJaLks33GL1SIyAWqo/oDSYPi833Kjn6bl9KIE/oNyGkso33LpnbJA128G/a3"
    },
    {
        "id": "oEguYlO33r5rkrVuzRy",
        "name": "aa",
        "fid": "/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt/oEguYlO33r5rkrVuzRy.psm",
        "fname": "/起步/开发部/aa",
        "fcode": "/oDJaLks33GL1SIyAWqo/oDSYPi833Kjn6bl9KIE/aa"
    }
]

3 管理者

3.1 根据组织角色的设置获取管理者

门户opm服务模块的流程服务提供一个api,根据人员FID和角色code获取管理者

  • URL

/entry/opm/flow/getmanagerbyrolecode

  • 请求方式

GET

  • 参数说明

getManagerByRoleCode(String personFID,String roleCode)

personFID:人员的fid

roleCode:角色code

3.2 获取部门主管

门户opm服务模块的流程服务提供一个api,根据人员FID获取第几级部门的主管

  • URL

/entry/opm/flow/getdirector

  • 请求方式

GET

  • 参数说明

getDirector(String personFID,Integer level)

personFID:人员的fid

level:部门级别,1代表人员所在部门的主管,2代表上一级部门的主管,以此类推

4 使用方法

4.1 前端使用

在非门户应用中调用门户中的服务,方法如下

  • 对于uaa和权限组件authorize提供的api,使用网络请求组件或js调用
  • 对于opm服务模块提供的api,使用租户内跨应用调服务

租户内跨应用调服务

  • 切换到高级页面
  • 点击租户内跨应用调服务、数据后面的立即设置按钮,打开对话框

在对话框中显示非本应用的其他应用列表

  • 选中entry应用的使用复选框
  • 点击entry应用右侧的...按钮,打开对话框
  • 选中其中的流程服务和组织管理服务
  • 点确定按钮,再点关闭按钮,关闭对话框

打开需要调用门户服务的页面

  • 在服务中可以看到流程服务和组织管理服务
  • 将需要调用的服务添加到页面上,使用方法和在应用内创建的服务相同

4.2 后端使用

使用ServiceUtil的get或post方法,调用上面的服务

ServiceUtil.get(SpringWebUtil.getRequest(),"entry","/opm/flow/getmanagerbyrolecode",null); JSONObject ret = ServiceUtil.post(SpringWebUtil.getRequest(),"entry","/uaa/org/postOrgs",paramObj);

results matching ""

    No results matching ""

    results matching ""

      No results matching ""