package com.larksuite.oapi.composite_api.im;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.service.im.v1.model.*;
public class Im {
/**
* 发送文件消息,使用到两个OpenAPI:
* 1. [上传文件](<a href="/ssl:ttdoc/server-docs/im-v1/file/create">...</a>)
* 2. [发送消息](<a href="/ssl:ttdoc/server-docs/im-v1/message/create">...</a>)
*/
public static BaseResponse<?> sendFile(Client client, SendFileRequest request) throws Exception {
// 上传文件
CreateFileReq createFileReq = CreateFileReq.newBuilder()
.createFileReqBody(CreateFileReqBody.newBuilder()
.fileType(request.getFileType())
.fileName(request.getFileName())
.duration(request.getDuration())
.file(request.getFile())
.build())
.build();
CreateFileResp createFileResp = client.im().file().create(createFileReq);
if (!createFileResp.success()) {
System.out.printf("client.im.file.create failed, code: %d, msg: %s, logId: %s%n",
createFileResp.getCode(), createFileResp.getMsg(), createFileResp.getRequestId());
return createFileResp;
}
// 发送消息
CreateMessageReq createMessageReq = CreateMessageReq.newBuilder()
.receiveIdType(request.getReceiveIdType())
.createMessageReqBody(CreateMessageReqBody.newBuilder()
.receiveId(request.getReceiveId())
.msgType("file")
.content(Jsons.DEFAULT.toJson(createFileResp.getData()))
.uuid(request.getUuid())
.build())
.build();
CreateMessageResp createMessageResp = client.im().message().create(createMessageReq);
if (!createMessageResp.success()) {
System.out.printf("client.im.message.create failed, code: %d, msg: %s, logId: %s%n",
createMessageResp.getCode(), createMessageResp.getMsg(), createMessageResp.getRequestId());
return createMessageResp;
}
// 返回结果
SendFileResponse response = new SendFileResponse();
response.setCode(0);
response.setMsg("success");
response.setCreateFileResponse(createFileResp.getData());
response.setCreateMessageResponse(createMessageResp.getData());
return response;
}
/**
* 发送图片消息,使用到两个OpenAPI:
* 1. [上传图片](<a href="/ssl:ttdoc/server-docs/im-v1/image/create">...</a>)
* 2. [发送消息](<a href="/ssl:ttdoc/server-docs/im-v1/message/create">...</a>)
*/
public static BaseResponse<?> sendImage(Client client, SendImageRequest request) throws Exception {
// 上传图片
CreateImageReq req = CreateImageReq.newBuilder()
.createImageReqBody(CreateImageReqBody.newBuilder()
.imageType("message")
.image(request.getImage())
.build())
.build();
CreateImageResp createImageResp = client.im().image().create(req);
if (!createImageResp.success()) {
System.out.printf("client.im.image.create failed, code: %d, msg: %s, logId: %s%n",
createImageResp.getCode(), createImageResp.getMsg(), createImageResp.getRequestId());
return createImageResp;
}
// 发送消息
CreateMessageReq createMessageReq = CreateMessageReq.newBuilder()
.receiveIdType(request.getReceiveIdType())
.createMessageReqBody(CreateMessageReqBody.newBuilder()
.receiveId(request.getReceiveId())
.msgType("image")
.content(Jsons.DEFAULT.toJson(createImageResp.getData()))
.uuid(request.getUuid())
.build())
.build();
CreateMessageResp createMessageResp = client.im().message().create(createMessageReq);
if (!createMessageResp.success()) {
System.out.printf("client.im.message.create failed, code: %d, msg: %s, logId: %s%n",
createMessageResp.getCode(), createMessageResp.getMsg(), createMessageResp.getRequestId());
return createMessageResp;
}
// 返回结果
SendImageResponse response = new SendImageResponse();
response.setCode(0);
response.setMsg("success");
response.setCreateImageResponse(createImageResp.getData());
response.setCreateMessageResponse(createMessageResp.getData());
return response;
}
}package com.larksuite.oapi.composite_api.im;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.service.im.v1.model.*;
public class Im {
/**
* 发送文件消息,使用到两个OpenAPI:
* 1. [上传文件](<a href="/ssl:ttdoc/server-docs/im-v1/file/create">...</a>)
* 2. [发送消息](<a href="/ssl:ttdoc/server-docs/im-v1/message/create">...</a>)
*/
public static BaseResponse<?> sendFile(Client client, SendFileRequest request) throws Exception {
// 上传文件
CreateFileReq createFileReq = CreateFileReq.newBuilder()
.createFileReqBody(CreateFileReqBody.newBuilder()
.fileType(request.getFileType())
.fileName(request.getFileName())
.duration(request.getDuration())
.file(request.getFile())
.build())
.build();
CreateFileResp createFileResp = client.im().file().create(createFileReq);
if (!createFileResp.success()) {
System.out.printf("client.im.file.create failed, code: %d, msg: %s, logId: %s%n",
createFileResp.getCode(), createFileResp.getMsg(), createFileResp.getRequestId());
return createFileResp;
}
// 发送消息
CreateMessageReq createMessageReq = CreateMessageReq.newBuilder()
.receiveIdType(request.getReceiveIdType())
.createMessageReqBody(CreateMessageReqBody.newBuilder()
.receiveId(request.getReceiveId())
.msgType("file")
.content(Jsons.DEFAULT.toJson(createFileResp.getData()))
.uuid(request.getUuid())
.build())
.build();
CreateMessageResp createMessageResp = client.im().message().create(createMessageReq);
if (!createMessageResp.success()) {
System.out.printf("client.im.message.create failed, code: %d, msg: %s, logId: %s%n",
createMessageResp.getCode(), createMessageResp.getMsg(), createMessageResp.getRequestId());
return createMessageResp;
}
// 返回结果
SendFileResponse response = new SendFileResponse();
response.setCode(0);
response.setMsg("success");
response.setCreateFileResponse(createFileResp.getData());
response.setCreateMessageResponse(createMessageResp.getData());
return response;
}
/**
* 发送图片消息,使用到两个OpenAPI:
* 1. [上传图片](<a href="/ssl:ttdoc/server-docs/im-v1/image/create">...</a>)
* 2. [发送消息](<a href="/ssl:ttdoc/server-docs/im-v1/message/create">...</a>)
*/
public static BaseResponse<?> sendImage(Client client, SendImageRequest request) throws Exception {
// 上传图片
CreateImageReq req = CreateImageReq.newBuilder()
.createImageReqBody(CreateImageReqBody.newBuilder()
.imageType("message")
.image(request.getImage())
.build())
.build();
CreateImageResp createImageResp = client.im().image().create(req);
if (!createImageResp.success()) {
System.out.printf("client.im.image.create failed, code: %d, msg: %s, logId: %s%n",
createImageResp.getCode(), createImageResp.getMsg(), createImageResp.getRequestId());
return createImageResp;
}
// 发送消息
CreateMessageReq createMessageReq = CreateMessageReq.newBuilder()
.receiveIdType(request.getReceiveIdType())
.createMessageReqBody(CreateMessageReqBody.newBuilder()
.receiveId(request.getReceiveId())
.msgType("image")
.content(Jsons.DEFAULT.toJson(createImageResp.getData()))
.uuid(request.getUuid())
.build())
.build();
CreateMessageResp createMessageResp = client.im().message().create(createMessageReq);
if (!createMessageResp.success()) {
System.out.printf("client.im.message.create failed, code: %d, msg: %s, logId: %s%n",
createMessageResp.getCode(), createMessageResp.getMsg(), createMessageResp.getRequestId());
return createMessageResp;
}
// 返回结果
SendImageResponse response = new SendImageResponse();
response.setCode(0);
response.setMsg("success");
response.setCreateImageResponse(createImageResp.getData());
response.setCreateMessageResponse(createMessageResp.getData());
return response;
}
}package com.larksuite.oapi.composite_api.contact;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.core.utils.Lists;
import com.lark.oapi.service.contact.v3.model.*;
import java.util.Arrays;
import java.util.List;
public class Contact {
/**
* 获取部门下所有用户列表,使用到两个OpenAPI:
* 1. [获取子部门列表](<a href="/ssl:ttdoc/server-docs/contact-v3/department/children">...</a>)
* 2. [获取部门直属用户列表](<a href="/ssl:ttdoc/server-docs/contact-v3/user/find_by_department">...</a>)
*/
public static BaseResponse<?> ListUserByDepartment(Client client, ListUserByDepartmentRequest request) throws Exception {
// 获取子部门列表
ChildrenDepartmentReq childrenDepartmentReq = ChildrenDepartmentReq.newBuilder()
.departmentIdType("open_department_id")
.departmentId(request.getDepartmentId())
.build();
ChildrenDepartmentResp childrenDepartmentResp = client.contact().department().children(childrenDepartmentReq);
if (!childrenDepartmentResp.success()) {
System.out.printf("client.contact.department.children failed, code: %d, msg: %s, logId: %s%n",
childrenDepartmentResp.getCode(), childrenDepartmentResp.getMsg(), childrenDepartmentResp.getRequestId());
return childrenDepartmentResp;
}
// 获取部门直属用户列表
List<User> users = Lists.newArrayList();
List<String> departments = Lists.newArrayList(request.getDepartmentId());
Department[] items = childrenDepartmentResp.getData().getItems();
for (Department item : items) {
departments.add(item.getOpenDepartmentId());
}
for (String department : departments) {
FindByDepartmentUserReq findByDepartmentUserReq = FindByDepartmentUserReq.newBuilder()
.departmentId(department)
.build();
FindByDepartmentUserResp findByDepartmentUserResp = client.contact().user().findByDepartment(findByDepartmentUserReq);
if (!findByDepartmentUserResp.success()) {
System.out.printf("client.contact.user.findByDepartment failed, code: %d, msg: %s, logId: %s%n",
findByDepartmentUserResp.getCode(), findByDepartmentUserResp.getMsg(), findByDepartmentUserResp.getRequestId());
return findByDepartmentUserResp;
}
users.addAll(Arrays.asList(findByDepartmentUserResp.getData().getItems()));
}
// 返回结果
ListUserByDepartmentResponse response = new ListUserByDepartmentResponse();
response.setCode(0);
response.setMsg("success");
response.setChildrenDepartmentResponse(childrenDepartmentResp.getData());
response.setFindByDepartmentUserResponse(users);
return response;
}
}package com.larksuite.oapi.composite_api.base;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.service.bitable.v1.model.*;
import java.util.ArrayList;
import java.util.List;
public class Base {
/**
* 创建多维表格同时添加数据表,使用到两个OpenAPI:
* 1. [创建多维表格](<a href="/ssl:ttdoc/server-docs/docs/bitable-v1/app/create">...</a>)
* 2. [新增一个数据表](<a href="/ssl:ttdoc/server-docs/docs/bitable-v1/app-table/create">...</a>)
*/
public static BaseResponse<?> CreateAppAndTables(Client client, CreateAppAndTablesRequest request) throws Exception {
// 创建多维表格
CreateAppReq createAppReq = CreateAppReq.newBuilder()
.reqApp(ReqApp.newBuilder()
.name(request.getName())
.folderToken(request.getFolderToken())
.build())
.build();
CreateAppResp createAppResp = client.bitable().app().create(createAppReq);
if (!createAppResp.success()) {
System.out.printf("client.bitable.app.create failed, code: %d, msg: %s, logId: %s%n",
createAppResp.getCode(), createAppResp.getMsg(), createAppResp.getRequestId());
return createAppResp;
}
// 添加数据表
List<CreateAppTableRespBody> tables = new ArrayList<>();
for (ReqTable table : request.getTables()) {
CreateAppTableReq createAppTableReq = CreateAppTableReq.newBuilder()
.appToken(createAppResp.getData().getApp().getAppToken())
.createAppTableReqBody(CreateAppTableReqBody.newBuilder()
.table(table)
.build())
.build();
CreateAppTableResp createAppTableResp = client.bitable().appTable().create(createAppTableReq);
if (!createAppTableResp.success()) {
System.out.printf("client.bitable.appTable.create failed, code: %d, msg: %s, logId: %s%n",
createAppTableResp.getCode(), createAppTableResp.getMsg(), createAppTableResp.getRequestId());
return createAppTableResp;
}
tables.add(createAppTableResp.getData());
}
// 返回结果
CreateAppAndTablesResponse response = new CreateAppAndTablesResponse();
response.setCode(0);
response.setMsg("success");
response.setCreateAppResponse(createAppResp.getData());
response.setCreateAppTableResponse(tables);
return response;
}
}package com.larksuite.oapi.composite_api.sheets;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.core.response.RawResponse;
import com.lark.oapi.core.token.AccessTokenType;
import com.lark.oapi.core.utils.Jsons;
import java.util.HashMap;
import java.util.Map;
public class Sheets {
public static BaseResponse<?> CopyAndPasteByRange(Client client, CopyAndPasteByRangeRequest request) throws Exception {
// 读取单个范围
RawResponse readResp = client.get(
String.format("/open-apis/sheets/v2/spreadsheets/%s/values/%s", request.getSpreadsheetToken(), request.getSrcRange()),
null,
AccessTokenType.Tenant);
SpreadsheetResp readSpreadsheetResp = Jsons.DEFAULT.fromJson(new String(readResp.getBody()), SpreadsheetResp.class);
if (!readSpreadsheetResp.success()) {
System.out.printf("read spreadsheet failed, code: %d, msg: %s, logId: %s%n",
readSpreadsheetResp.getCode(), readSpreadsheetResp.getMsg(), readSpreadsheetResp.getRequestId());
return readSpreadsheetResp;
}
// 向单个范围写入数据
Map<String, Object> valueRange = new HashMap<>();
valueRange.put("range", request.getDstRange());
valueRange.put("values", readSpreadsheetResp.getData().getValueRange().getValues());
Map<String, Object> body = new HashMap<>();
body.put("valueRange", valueRange);
RawResponse writeResp = client.put(
String.format("/open-apis/sheets/v2/spreadsheets/%s/values", request.getSpreadsheetToken()),
body,
AccessTokenType.Tenant);
SpreadsheetResp writeSpreadsheetResp = Jsons.DEFAULT.fromJson(new String(writeResp.getBody()), SpreadsheetResp.class);
if (!writeSpreadsheetResp.success()) {
System.out.printf("write spreadsheet failed, code: %d, msg: %s, logId: %s%n",
writeSpreadsheetResp.getCode(), writeSpreadsheetResp.getMsg(), writeSpreadsheetResp.getRequestId());
return writeSpreadsheetResp;
}
// 返回结果
CopyAndPasteRangeResponse response = new CopyAndPasteRangeResponse();
response.setCode(0);
response.setMsg("success");
response.setReadResponse(readSpreadsheetResp.getData());
response.setWriteResponse(writeSpreadsheetResp.getData());
return response;
}
}package com.larksuite.oapi.composite_api.sheets;
import com.lark.oapi.Client;
import com.lark.oapi.core.response.BaseResponse;
import com.lark.oapi.core.response.RawResponse;
import com.lark.oapi.core.token.AccessTokenType;
import com.lark.oapi.core.utils.Jsons;
import java.util.HashMap;
import java.util.Map;
public class Sheets {
public static BaseResponse<?> CopyAndPasteByRange(Client client, CopyAndPasteByRangeRequest request) throws Exception {
// 读取单个范围
RawResponse readResp = client.get(
String.format("/open-apis/sheets/v2/spreadsheets/%s/values/%s", request.getSpreadsheetToken(), request.getSrcRange()),
null,
AccessTokenType.Tenant);
SpreadsheetResp readSpreadsheetResp = Jsons.DEFAULT.fromJson(new String(readResp.getBody()), SpreadsheetResp.class);
if (!readSpreadsheetResp.success()) {
System.out.printf("read spreadsheet failed, code: %d, msg: %s, logId: %s%n",
readSpreadsheetResp.getCode(), readSpreadsheetResp.getMsg(), readSpreadsheetResp.getRequestId());
return readSpreadsheetResp;
}
// 向单个范围写入数据
Map<String, Object> valueRange = new HashMap<>();
valueRange.put("range", request.getDstRange());
valueRange.put("values", readSpreadsheetResp.getData().getValueRange().getValues());
Map<String, Object> body = new HashMap<>();
body.put("valueRange", valueRange);
RawResponse writeResp = client.put(
String.format("/open-apis/sheets/v2/spreadsheets/%s/values", request.getSpreadsheetToken()),
body,
AccessTokenType.Tenant);
SpreadsheetResp writeSpreadsheetResp = Jsons.DEFAULT.fromJson(new String(writeResp.getBody()), SpreadsheetResp.class);
if (!writeSpreadsheetResp.success()) {
System.out.printf("write spreadsheet failed, code: %d, msg: %s, logId: %s%n",
writeSpreadsheetResp.getCode(), writeSpreadsheetResp.getMsg(), writeSpreadsheetResp.getRequestId());
return writeSpreadsheetResp;
}
// 返回结果
CopyAndPasteRangeResponse response = new CopyAndPasteRangeResponse();
response.setCode(0);
response.setMsg("success");
response.setReadResponse(readSpreadsheetResp.getData());
response.setWriteResponse(writeSpreadsheetResp.getData());
return response;
}
}