/**
  * 退出登录
  *
  * @return
  */
 public String logout() {
   UserInfo user = getOnlineUser();
   if (user != null) {
     OperationLog ol = new OperationLog();
     ol.setUserId(user.getEntityId());
     ol.setUserName(user.getName());
     ol.setDetail("login.action");
     ol.setUrl("logout.action");
     ol.setIp(getRequest().getRemoteAddr());
     try {
       this.getBaseService().save(ol);
     } catch (Exception ex) {
       log.error(ex.getMessage(), ex);
     }
   }
   try {
     this.setOnlineUser(null);
     this.getSession().clear();
     HttpSession session = getRequest().getSession();
     session.invalidate(); // 移出所有
   } catch (Exception e) {
     log.error(e.getMessage(), e);
   }
   return "success";
 }
 protected void SendCommand(TerminalCommand tc) {
   VehicleData vd = vehicleService.getVehicleData(getVehicleId());
   tc.setPlateNo(vd.getPlateNo());
   tc.setSimNo(vd.getSimNo());
   tc.setVehicleId(vd.getEntityId());
   UserInfo onlineUser = getOnlineUser();
   if (onlineUser != null) {
     tc.setUserId(onlineUser.getEntityId());
     tc.setOwner(onlineUser.getName());
   }
   getTerminalService().SendCommand(tc);
 }
  public String login() {

    if (StringUtil.isEmpty(this.username)) {
      setMessage("用户名不能为空");
      return json(false, super.getMessage());
    }
    if (this.password == null) {
      setMessage("密码不能为空");
      return json(false, super.getMessage());
    }

    try {
      String hsql = "from UserInfo where loginName = ? and userState <> ? and deleted = ?";

      UserInfo user =
          (UserInfo)
              this.getBaseService()
                  .find(hsql, new Object[] {username, UserInfo.STATE_SUSPEND, false});

      if (user == null) {
        setMessage("用户名或密码错误");
        return json(false, super.getMessage());
      }
      String userpassword = null;

      userpassword = user.getPassword();

      String pwd = StringUtil.encodePassword(userpassword, "md5");

      if (!userpassword.equalsIgnoreCase(this.password)) {
        setMessage("用户名或密码不正确");
        return json(false, super.getMessage());
      }

      // user.setUserType(this.userType);
      String hostName = getRequest().getRemoteHost();
      user.setIp(hostName);
      if (user.getRoles().size() < 1) {
        Role role = new Role();
        role.setName("ROLE_ADMIN");
        user.getRoles().add(role);
      }
      user.setLoginTime(new Date());
      MobileOnlineUser.onlineUserMap.put(user.getEntityId(), user);
      authorizedFuncs = new ArrayList();
      if (user.getUserFlag() == UserInfo.USER_FLAG_SUPER_ADMIN) {
        // 如果是超级用户,将加所有权限,可以分配所有管理部门
        authorizedFuncs = this.getBaseService().loadAll(FuncModel.class);
      } else {
        Role r = user.getRole();
        if (r != null) {
          authorizedFuncs.addAll(r.getFuncs());
        }
      }
      // 移动端的权限
      List funcResult = new ArrayList();
      Map userInfoMap = new HashMap();
      // Map funcMap = new HashMap();
      for (FuncModel f : authorizedFuncs) {
        if (f.getFuncType() == FuncModel.FUNC_TYPE_MOBILE) {
          funcResult.add(f.getFuncName());
          // funcMap.put(f.getFuncName(), f.getFuncName());
        }
      }

      userInfoMap.put("funcs", funcResult);
      SystemConfig sc = (SystemConfig) this.getBaseService().load(SystemConfig.class, 1);

      userInfoMap.put("id", user.getEntityId());
      userInfoMap.put("name", user.getName());
      userInfoMap.put("loginName", user.getLoginName());

      userInfoMap.put("mapCenterLat", user.getMapCenterLat());
      if (user.getMapCenterLat() > 0) {
        sc.setInitLat(user.getMapCenterLat());
      }
      if (user.getMapCenterLng() > 0) {
        sc.setInitLng(user.getMapCenterLng());
      }

      userInfoMap.put("mapCenterLng", user.getMapCenterLng());

      if (user.getMapLevel() > 0) {
        userInfoMap.put("mapZoom", user.getMapLevel());

        sc.setInitZoomLevel(user.getMapLevel());
      } else {
        userInfoMap.put("mapZoom", 15);
      }

      if (user.getRoles().size() < 1) {
        // if (user.getUserType() == 0) {
        Role role = new Role();
        // role.setDescription(getText("administrator"));
        role.setName("ROLE_ADMIN");
        user.getRoles().add(role);
        // }
      }
      Role r = user.getRole();
      userInfoMap.put("roleName", r.getName());

      // JSONArray roleArray = JSONArray.fromObject(user.getRoles(),
      // this.jsonConfig);

      getSession().put(SESSION_KEY_SYSTEM_CONFIG, sc);

      super.setOnlineUser(user);
      super.setAuthorizedDep(user);

      this.LogOperation("移动端登录");

      return json(true, userInfoMap);
    } catch (Exception e) {
      this.log.error(e.getMessage(), e);
      return json(false, e.getMessage());
    }
  }