/**
   * 查询分类、公共连接列表
   *
   * @param page 当前页
   * @param pageNum 每页显示条数
   * @return 分类、公共连接列表
   */
  @GET
  @Path("/list/commonlink")
  @Produces({MediaType.APPLICATION_JSON})
  public JSONObject findCommonlinkList(
      @DefaultValue("1") @QueryParam("page") int page,
      @DefaultValue("10") @QueryParam("pagenum") int pageNum) {
    JSONObject result = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    result.put("count", 0);
    result.put("result", jsonArray);
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("loginUser");
    if (null != user) {
      PageBounds pb = PageBoundsUtil.PageBoundsOrderExtend("orderId.desc");
      pb.setPage(page);
      pb.setLimit(pageNum);

      CommonlinkType commonlinkType = new CommonlinkType();
      commonlinkType.setUserId(String.valueOf(user.getId()));

      // 获取公共连接分类列表
      Pager<CommonlinkType> commonLinkTypePage =
          commonlinkService.findCommonlinkTypeList(commonlinkType, pb);

      List<String> types = new ArrayList<String>();
      if (null != commonLinkTypePage) {
        result.put("count", commonLinkTypePage.getTotal());
        List<CommonlinkType> commonlinkTypes = commonLinkTypePage.getDatas();
        // 组装公共连接查询条件(多个分类,主要用作in查询)
        for (CommonlinkType linkType : commonlinkTypes) {
          types.add(linkType.getId());
        }
        // 获取指定分类下的所有连接列表
        List<Commonlink> commonLinkList =
            commonlinkService.findCommonlinkList(types, commonlinkType);
        // {"result":
        // [{id:"",name:"",userid:"",commonlinks:[{link1},{link2}...]},{id:"",name:"",userid:"",commonlinks:[{link1},{link2}...]}.....]}
        for (CommonlinkType linkType : commonlinkTypes) {
          JSONObject jsObj = new JSONObject();
          buildCommonlinkTypeJsonObj(jsObj, linkType);
          JSONArray array = new JSONArray();
          for (Commonlink link : commonLinkList) {
            if (linkType.getId().equals(link.getTypeId())) {
              JSONObject obj = new JSONObject();
              buildCommonlinkJsonObj(obj, link);
              array.put(obj);
            }
          }

          jsObj.put("commonlinks", array);
          jsonArray.put(jsObj);
        }
        result.put("result", jsonArray);
      }
    }
    return result;
  }
  /**
   * 添加公共连接分类
   *
   * @param jsonObj 公共连接分类json数据
   * @return 0:失败 1:成功 2:重复添加
   * @throws UnsupportedEncodingException 异常
   */
  @PUT
  @Path("/add/commonlinktype")
  @Produces({MediaType.APPLICATION_JSON})
  @AuthMethod
  public JSONObject addCommonlinkType(JSONObject jsonObj) throws UnsupportedEncodingException {
    JSONObject result = new JSONObject();
    // 0表示添加失败
    result.put("result", 0);
    if (null != jsonObj) {

      CommonlinkType commonlinkType = new CommonlinkType();
      buildJSONObjectToCommonlinkType(commonlinkType, jsonObj);
      // 是否已经存在该连接
      if (hasExistCommonlinkType(commonlinkType)) {
        // 2表示存在
        return result.put("result", 2);
      }
      boolean success = commonlinkService.addCommonlinkType(commonlinkType);
      if (success) {
        // 1表示添加成功
        result.put("result", 1);
        return result;
      }
    }
    return result;
  }
 /**
  * 判断是否已经存在当前连接
  *
  * @param commonlinkType 连接参数
  * @return true:表示存在 false:表示不存在
  */
 private boolean hasExistCommonlink(Commonlink commonlink) {
   int count = commonlinkService.findCommonlinkCountByNameUrl(commonlink);
   if (count > 0) {
     return true;
   }
   return false;
 }
  /**
   * 根据分类id,查询当前分类下的公共连接列表
   *
   * @param typeid 分类id
   * @param page 当前页
   * @param pageNum 每页显示条数
   * @return 当前分类下的公共连接列表
   */
  @GET
  @Path("/list/commonlink/{typeid}")
  @Produces({MediaType.APPLICATION_JSON})
  public JSONObject findCommonlinkListByTypeId(
      @PathParam("typeid") String typeid,
      @DefaultValue("1") @QueryParam("page") int page,
      @DefaultValue("10") @QueryParam("pagenum") int pageNum) {
    JSONObject result = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    result.put("count", 0);
    result.put("commonlinklist", jsonArray);
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("loginUser");
    if (null != user) {
      PageBounds pb = PageBoundsUtil.PageBoundsOrderExtend("orderId.desc");
      pb.setPage(page);
      pb.setLimit(pageNum);

      Commonlink commonlink = new Commonlink();
      commonlink.setUserId(String.valueOf(user.getId()));
      commonlink.setTypeId(typeid);

      // 获取公共连接分类列表
      Pager<Commonlink> commonLinkPage =
          commonlinkService.findCommonlinkListByTypeId(commonlink, pb);
      if (null != commonLinkPage && commonLinkPage.getTotal() > 0) {
        result.put("count", commonLinkPage.getTotal());
        buildCommonlinkListToJSONAarray(commonLinkPage, jsonArray);
      }
    }
    return result;
  }
 /**
  * 判断是否已经存在当前分类
  *
  * @param commonlinkType 分类参数
  * @return true:表示存在 false:表示不存在
  */
 private boolean hasExistCommonlinkType(CommonlinkType commonlinkType) {
   int count = commonlinkService.findCommonlinkTypeCountByName(commonlinkType);
   if (count > 0) {
     return true;
   }
   return false;
 }
 /**
  * 更新公共连接
  *
  * @param jsonObj 公共连接参数json
  * @return 0:失败 1:成功
  * @throws UnsupportedEncodingException 异常
  */
 @POST
 @Path("/update/commonlink")
 @Produces({MediaType.APPLICATION_JSON})
 public JSONObject updateCommonlink(JSONObject jsonObj) throws UnsupportedEncodingException {
   HttpSession session = request.getSession();
   User user = (User) session.getAttribute("loginUser");
   JSONObject result = new JSONObject();
   result.put("result", 0);
   if (null != jsonObj && null != user) {
     Commonlink commonlink = new Commonlink();
     buildJSONObjectToCommonlink(commonlink, jsonObj);
     boolean success = commonlinkService.updateCommonlink(commonlink);
     if (success) {
       result.put("result", 1);
       return result;
     }
   }
   return result;
 }
 /**
  * 删除公共连接分类
  *
  * @param id 分类id
  * @return 0:失败 1:成功
  */
 @DELETE
 @Path("/delete/commonlinktype/{id}")
 @Produces({MediaType.APPLICATION_JSON})
 public JSONObject deleteCommonlinkType(@PathParam("id") String id) {
   HttpSession session = request.getSession();
   User user = (User) session.getAttribute("loginUser");
   JSONObject result = new JSONObject();
   result.put("result", 0);
   if (null != user) {
     String userId = String.valueOf(user.getId());
     CommonlinkType commonlinkType = new CommonlinkType(id, userId);
     boolean success = commonlinkService.deleteCommonlinkType(commonlinkType);
     if (success) {
       result.put("result", 1);
       return result;
     }
   }
   return result;
 }
 /**
  * 更新公共链接分类
  *
  * @param jsonObj 公共连接分类json数据
  * @return 0:失败 1:成功
  */
 @POST
 @Path("/update/commonlinktype")
 @Produces({MediaType.APPLICATION_JSON})
 public JSONObject updateCommonlinkType(JSONObject jsonObj) {
   HttpSession session = request.getSession();
   User user = (User) session.getAttribute("loginUser");
   JSONObject result = new JSONObject();
   result.put("result", 0);
   if (null != jsonObj && null != user) {
     String id = jsonObj.optString("id");
     String userId = String.valueOf(user.getId());
     String name = jsonObj.optString("name");
     CommonlinkType commonlinkType =
         new CommonlinkType(id, name, userId, DataUtil.date2Str(new Date()));
     boolean success = commonlinkService.updateCommonlinkType(commonlinkType);
     if (success) {
       result.put("result", 1);
       return result;
     }
   }
   return result;
 }