页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 5 下一个 »

1 概述

需求:

由于SmartBI不限制用户登陆移动设备的数量,客户需要限制一个用户最多只能够登陆不超过三台手机或者Pad设备

注意:本示例来源于实际项目,原始版本是V5.0,可作为参考性质,也许是不能运行的。

实现方案:

      产品已经有 “移动设备管理“功能,只是产品的移动设备管理要么是手动要么是自动审核,这个项目是用户第一次接入的设备自动审核,第二次接入的设备需要手动审核

      需要重写IPadPortalModule.java

      在spring上重新注册相同key的module到RMIModule,module的注册请见自定义Module.

2 编写修改代码

2.1 重写IPadPortalModule.java

public String canAccessIPadModule(String ipadId) {
  RegisterInfo info = IPadDAOFactory.getRegisterInfoDAO().load(ipadId);
  if (info == null) {
   // 新设备
   // 获取所有注册信息
   List<RegisterInfo> rInfos = IPadDAOFactory.getRegisterInfoDAO()
     .getAllRegisters();
   if (rInfos != null) {
    int flag = 0;
    for (int i = 0; i < rInfos.size(); i++) {
     String rUser = rInfos.get(i).getRequestUser();
     IUser user = IPadPortalModule.getInstance()
       .getStateModule().getCurrentUser();
     String cUser = user.getName();
     if (!StringUtil.isNullOrEmpty(user.getAlias())) {
      cUser += "(" + user.getAlias() + ")";
     }
     if (rUser.equals(cUser)) {
      flag++;
     }
    }
    LOG.info("flag:"+flag);
    if (flag > 0 && flag < 3) {
     // 该用户非第一次接入设备需要审核
     return "requireRegister";
    }
    if (flag >= 3) {
     return StringUtil.getLanguageValue("Ipad_Register_Error", CommonConfiguration.getInstance().getLocale());
    }
    if (flag == 0) {
     // 自动审核
     IPadDAOFactory.getRegisterInfoDAO().register(ipadId);
     return super.canAccessIPadModule(ipadId);
    }
   } else {
    // 自动审核
    IPadDAOFactory.getRegisterInfoDAO().register(ipadId);
    return super.canAccessIPadModule(ipadId);
   }
  } else {
   // 已经存在记录
   IUser user = IPadPortalModule.getInstance().getStateModule()
     .getCurrentUser();
   String name = user.getName();
   if (!StringUtil.isNullOrEmpty(user.getAlias())) {
    name += "(" + user.getAlias() + ")";
   }
   String rName = info.getRequestUser();
   if (name.equals(rName)) {
    switch (info.getStatus()) {
    case ACCEPTED:
    case AUTO_ACCEPTED:
     return "true";
    case REJECTED:
     return "reject";
    case REQUEST:
     return "request";
    }
    return "faild";
   } else {
    return "faild";
   }
  }
  
  return "faild";
 }

3 相关资源(EPPR-8002)

示例代码.rar

  • 无标签