Skip to content

Commit

Permalink
🆕 #3226 【企业微信】增加办公-文档管理模块相关接口
Browse files Browse the repository at this point in the history
  • Loading branch information
Hugo-Ho authored Jan 29, 2024
1 parent 0104af1 commit 34622b3
Show file tree
Hide file tree
Showing 8 changed files with 490 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package me.chanjar.weixin.cp.api;

import lombok.NonNull;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.oa.doc.*;

/**
* 企业微信文档相关接口.
* https://developer.work.weixin.qq.com/document/path/97392
*
* @author Hugo
*/
public interface WxCpOaWeDocService {

/**
* 新建文档
* 该接口用于新建文档和表格,新建收集表可前往 收集表管理 查看。
* <p>
* 请求方式:POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/wedoc/create_doc?access_token=ACCESS_TOKEN
*
* @param request 新建文档对应请求参数
* @return url 新建文档的访问链接
* @return docid 新建文档的docid
* @throws WxErrorException the wx error exception
*/
WxCpDocCreateData docCreate(@NonNull WxCpDocCreateRequest request) throws WxErrorException;

/**
* 重命名文档/收集表
* 该接口用于对指定文档/收集表进行重命名。
* <p>
* 请求方式:POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/wedoc/rename_doc?access_token=ACCESS_TOKEN
*
* @param request 重命名文档/收集表
* @return wx cp base resp
* @throws WxErrorException the wx error exception
*/
WxCpBaseResp docRename(@NonNull WxCpDocRenameRequest request) throws WxErrorException;

/**
* 删除文档/收集表
* 该接口用于删除指定文档/收集表。
* <p>
* 请求方式:POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/wedoc/del_doc?access_token=ACCESS_TOKEN
*
* @param docId 文档docid(docid、formid只能填其中一个)
* @param formId 收集表id(docid、formid只能填其中一个)
* @return wx cp base resp
* @throws WxErrorException the wx error exception
*/
WxCpBaseResp docDelete(String docId, String formId) throws WxErrorException;

/**
* 获取文档基础信息
* 该接口用于获取指定文档的基础信息。
* <p>
* 请求方式:POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/wedoc/get_doc_base_info?access_token=ACCESS_TOKEN
*
* @param docId 文档docid
* @return wx cp doc info
* @throws WxErrorException the wx error exception
*/
WxCpDocInfo docInfo(@NonNull String docId) throws WxErrorException;

/**
* 分享文档
* 该接口用于获取文档的分享链接。
* <p>
* 请求方式:POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/wedoc/doc_share?access_token=ACCESS_TOKEN
*
* @param docId 文档docid
* @return url 文档分享链接
* @throws WxErrorException the wx error exception
*/
WxCpDocShare docShare(@NonNull String docId) throws WxErrorException;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package me.chanjar.weixin.cp.api.impl;

import com.google.gson.JsonObject;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpOaWeDocService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.oa.doc.*;

import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Oa.*;

/**
* 企业微信微盘接口实现类.
*
* @author Wang_Wong created on 2022-04-22
*/
@Slf4j
@RequiredArgsConstructor
public class WxCpOaWeDocServiceImpl implements WxCpOaWeDocService {
private final WxCpService cpService;

@Override
public WxCpDocCreateData docCreate(@NonNull WxCpDocCreateRequest request) throws WxErrorException {
String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(WEDOC_CREATE_DOC);
String responseContent = this.cpService.post(apiUrl, request.toJson());
return WxCpDocCreateData.fromJson(responseContent);
}

@Override
public WxCpBaseResp docRename(@NonNull WxCpDocRenameRequest request) throws WxErrorException {
String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(WEDOC_RENAME_DOC);
String responseContent = this.cpService.post(apiUrl, request.toJson());
return WxCpBaseResp.fromJson(responseContent);
}

@Override
public WxCpBaseResp docDelete(String docId, String formId) throws WxErrorException {
String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(WEDOC_DEL_DOC);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("docid", docId);
jsonObject.addProperty("formid", formId);
String responseContent = this.cpService.post(apiUrl, jsonObject.toString());
return WxCpBaseResp.fromJson(responseContent);
}

@Override
public WxCpDocInfo docInfo(@NonNull String docId) throws WxErrorException {
String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(WEDOC_GET_DOC_BASE_INFO);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("docid", docId);
String responseContent = this.cpService.post(apiUrl, jsonObject.toString());
return WxCpDocInfo.fromJson(responseContent);
}

@Override
public WxCpDocShare docShare(@NonNull String docId) throws WxErrorException {
String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(WEDOC_DOC_SHARE);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("docid", docId);
String responseContent = this.cpService.post(apiUrl, jsonObject.toString());
return WxCpDocShare.fromJson(responseContent);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package me.chanjar.weixin.cp.bean.oa.doc;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;

/**
* 新建空间信息.
*
* @author Wang_Wong
*/
@Data
public class WxCpDocCreateData extends WxCpBaseResp implements Serializable {
private static final long serialVersionUID = -5028321625242879581L;

/**
* 新建文档的访问链接
*/
@SerializedName("url")
private String url;

/**
* 新建文档的docid
*/
@SerializedName("docid")
private String docId;

/**
* From json wx cp space create data.
*
* @param json the json
* @return the wx cp space create data
*/
public static WxCpDocCreateData fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpDocCreateData.class);
}

public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package me.chanjar.weixin.cp.bean.oa.doc;

import com.google.gson.annotations.SerializedName;
import lombok.*;
import lombok.experimental.Accessors;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;
import java.util.List;

/**
* 新建文档请求.
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCpDocCreateRequest implements Serializable {
private static final long serialVersionUID = -4960239393895454138L;

/**
* 空间spaceid。若指定spaceid,则fatherid也要同时指定
*/
@SerializedName("spaceid")
private String spaceId;

/**
* 父目录fileid, 在根目录时为空间spaceid
*/
@SerializedName("fatherid")
private String fatherId;

/**
* 文档类型, 3:文档 4:表格
*/
@SerializedName("doc_type")
private Integer docType;

/**
* 文档名字(注意:文件名最多填255个字符, 超过255个字符会被截断)
*/
@SerializedName("doc_name")
private String docName;

/**
* 文档管理员userid
*/
@SerializedName("admin_users")
private List<String> adminUsers;

/**
* From json wx cp space create request.
*
* @param json the json
* @return the wx cp space create request
*/
public static WxCpDocCreateRequest fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpDocCreateRequest.class);
}

/**
* To json string.
*
* @return the string
*/
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package me.chanjar.weixin.cp.bean.oa.doc;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;

/**
* 获取空间信息.
*
* @author Wang_Wong
*/
@Data
public class WxCpDocInfo extends WxCpBaseResp implements Serializable {
private static final long serialVersionUID = -5028321623142879581L;

@SerializedName("doc_base_info")
private DocInfo docBaseInfo;

/**
* The type Space info.
*/
@Getter
@Setter
public static class DocInfo implements Serializable {
private static final long serialVersionUID = -4860239393895754598L;

/**
* 文档docid
*/
@SerializedName("docid")
private String docId;

/**
* 文档名字
*/
@SerializedName("doc_name")
private String docName;

/**
* 文档创建时间
*/
@SerializedName("create_time")
private Long createTime;

/**
* 文档最后修改时间
*/
@SerializedName("modify_time")
private Long modifyTime;

/**
* 3: 文档 4: 表格
*/
@SerializedName("doc_type")
private Integer docType;

/**
* From json space info.
*
* @param json the json
* @return the space info
*/
public static DocInfo fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, DocInfo.class);
}

/**
* To json string.
*
* @return the string
*/
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}

}


/**
* From json wx cp space info.
*
* @param json the json
* @return the wx cp space info
*/
public static WxCpDocInfo fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpDocInfo.class);
}

public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}

}
Loading

0 comments on commit 34622b3

Please sign in to comment.