Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat:【企业微信】增加"会议室预定管理"相关接口 #3397

Merged
merged 1 commit into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.api;

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.oa.meetingroom.WxCpOaMeetingRoom;
import me.chanjar.weixin.cp.bean.oa.meetingroom.*;

import java.util.List;

Expand Down Expand Up @@ -59,17 +59,110 @@ public interface WxCpOaMeetingRoomService {
void editMeetingRoom(WxCpOaMeetingRoom meetingRoom) throws WxErrorException;

/**
* 编辑会议室.
* 删除会议室.
* <pre>
* 该接口用于通过应用在企业内编辑会议室
* 企业可通过此接口删除指定的会议室
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/del?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93619
* </pre>
*
* @param meetingRoomId 会议室对象
* @param meetingRoomId 会议室ID
* @throws WxErrorException .
*/
void deleteMeetingRoom(Integer meetingRoomId) throws WxErrorException;

/**
* 查询会议室的预定信息.
* <pre>
* 企业可通过此接口查询相关会议室在指定时间段的预定情况,如是否已被预定,预定者的userid等信息,不支持跨天查询。
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/get_booking_info?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomBookingInfoRequest 会议室预定信息查询对象
* @throws WxErrorException .
*/
WxCpOaMeetingRoomBookingInfoResult getMeetingRoomBookingInfo(WxCpOaMeetingRoomBookingInfoRequest wxCpOaMeetingRoomBookingInfoRequest) throws WxErrorException;

/**
* 预定会议室.
* <pre>
* 企业可通过此接口预定会议室并自动关联日程。
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomBookRequest 会议室预定对象
* @throws WxErrorException .
*/
WxCpOaMeetingRoomBookResult bookingMeetingRoom(WxCpOaMeetingRoomBookRequest wxCpOaMeetingRoomBookRequest) throws WxErrorException;

/**
* 通过日程预定会议室.
* <pre>
* 企业可通过此接口为指定日程预定会议室,支持重复日程预定。
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book_by_schedule?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomBookByScheduleRequest 会议室预定对象
* @throws WxErrorException .
*/
WxCpOaMeetingRoomBookResult bookingMeetingRoomBySchedule(WxCpOaMeetingRoomBookByScheduleRequest wxCpOaMeetingRoomBookByScheduleRequest) throws WxErrorException;

/**
* 通过会议预定会议室.
* <pre>
* 企业可通过此接口为指定会议预定会议室,支持重复会议预定。
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book_by_meeting?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomBookByMeetingRequest 会议室预定对象
* @throws WxErrorException .
*/
WxCpOaMeetingRoomBookResult bookingMeetingRoomByMeeting(WxCpOaMeetingRoomBookByMeetingRequest wxCpOaMeetingRoomBookByMeetingRequest) throws WxErrorException;


/**
* 取消预定会议室.
* <pre>
* 企业可通过此接口取消会议室的预定
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/cancel_book?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomCancelBookRequest 取消预定会议室对象
* @throws WxErrorException .
*/
void cancelBookMeetingRoom(WxCpOaMeetingRoomCancelBookRequest wxCpOaMeetingRoomCancelBookRequest) throws WxErrorException;


/**
* 根据会议室预定ID查询预定详情.
* <pre>
* 企业可通过此接口根据预定id查询相关会议室的预定情况
* 请求方式: POST(HTTPS)
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/bookinfo/get?access_token=ACCESS_TOKEN
*
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
* </pre>
*
* @param wxCpOaMeetingRoomBookingInfoByBookingIdRequest 根据会议室预定ID查询预定详情对象
* @throws WxErrorException .
*/
WxCpOaMeetingRoomBookingInfoByBookingIdResult getBookingInfoByBookingId(WxCpOaMeetingRoomBookingInfoByBookingIdRequest wxCpOaMeetingRoomBookingInfoByBookingIdRequest) throws WxErrorException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import me.chanjar.weixin.common.util.json.GsonParser;
import me.chanjar.weixin.cp.api.WxCpOaMeetingRoomService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.oa.meetingroom.WxCpOaMeetingRoom;
import me.chanjar.weixin.cp.bean.oa.meetingroom.*;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.util.List;
Expand Down Expand Up @@ -48,4 +48,40 @@ public void deleteMeetingRoom(Integer meetingRoomId) throws WxErrorException {
this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_DEL),
GsonHelper.buildJsonObject("meetingroom_id", meetingRoomId));
}

@Override
public WxCpOaMeetingRoomBookingInfoResult getMeetingRoomBookingInfo(WxCpOaMeetingRoomBookingInfoRequest wxCpOaMeetingRoomBookingInfoRequest) throws WxErrorException {
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_GET_BOOKING_INFO), wxCpOaMeetingRoomBookingInfoRequest);
return WxCpOaMeetingRoomBookingInfoResult.fromJson(response);
}

@Override
public WxCpOaMeetingRoomBookResult bookingMeetingRoom(WxCpOaMeetingRoomBookRequest wxCpOaMeetingRoomBookRequest) throws WxErrorException {
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK), wxCpOaMeetingRoomBookRequest);
return WxCpOaMeetingRoomBookResult.fromJson(response);
}

@Override
public WxCpOaMeetingRoomBookResult bookingMeetingRoomBySchedule(WxCpOaMeetingRoomBookByScheduleRequest wxCpOaMeetingRoomBookByScheduleRequest) throws WxErrorException {
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK_BY_SCHEDULE), wxCpOaMeetingRoomBookByScheduleRequest);
return WxCpOaMeetingRoomBookResult.fromJson(response);
}

@Override
public WxCpOaMeetingRoomBookResult bookingMeetingRoomByMeeting(WxCpOaMeetingRoomBookByMeetingRequest wxCpOaMeetingRoomBookByMeetingRequest) throws WxErrorException {
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK_BY_MEETING), wxCpOaMeetingRoomBookByMeetingRequest);
return WxCpOaMeetingRoomBookResult.fromJson(response);
}

@Override
public void cancelBookMeetingRoom(WxCpOaMeetingRoomCancelBookRequest wxCpOaMeetingRoomCancelBookRequest) throws WxErrorException {
this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_CANCEL_BOOK), wxCpOaMeetingRoomCancelBookRequest);

}

@Override
public WxCpOaMeetingRoomBookingInfoByBookingIdResult getBookingInfoByBookingId(WxCpOaMeetingRoomBookingInfoByBookingIdRequest wxCpOaMeetingRoomBookingInfoByBookingIdRequest) throws WxErrorException {
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOKINFO_GET), wxCpOaMeetingRoomBookingInfoByBookingIdRequest);
return WxCpOaMeetingRoomBookingInfoByBookingIdResult.fromJson(response);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,19 @@ public class WxCpXmlMessage implements Serializable {
@XStreamConverter(value = XStreamCDataConverter.class)
private String calId;

/**
* 会议室ID.
*/
@XStreamAlias("MeetingRoomId")
private String meetingRoomId;

/**
* 会议室预定id,可根据该ID查询具体的会议预定情况
*/
@XStreamAlias("BookingId")
@XStreamConverter(value = XStreamCDataConverter.class)
private String bookingId;

/**
* 扩展属性.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package me.chanjar.weixin.cp.bean.oa.meetingroom;


import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import me.chanjar.weixin.common.bean.ToJson;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;

/**
* 通过会议预定会议室
*
* @author <a href="https://github.com/llw5181">小梁</a>
* @version 1.0 Create by 2024/10/28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCpOaMeetingRoomBookByMeetingRequest implements Serializable, ToJson {
private static final long serialVersionUID = 2825289798463742531L;
/**
* 会议室Id
*/
@SerializedName("meetingroom_id")
private Integer meetingroomId;
/**
* 会议id,仅可使用同应用创建的会议
*/
@SerializedName("meetingid")
private String meetingid;
/**
* 预定人的userid
*/
@SerializedName("booker")
private String booker;


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

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


import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import me.chanjar.weixin.common.bean.ToJson;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;

/**
* 通过日程预定会议室
*
* @author <a href="https://github.com/llw5181">小梁</a>
* @version 1.0 Create by 2024/10/28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCpOaMeetingRoomBookByScheduleRequest implements Serializable, ToJson {
private static final long serialVersionUID = 2825289798463742532L;
/**
* 会议室Id
*/
@SerializedName("meetingroom_id")
private Integer meetingroomId;
/**
* 日程id,仅可使用同应用创建的日程
*/
@SerializedName("schedule_id")
private String schedule_id;
/**
* 预定人的userid
*/
@SerializedName("booker")
private String booker;


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

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


import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import me.chanjar.weixin.common.bean.ToJson;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

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

/**
* 预定会议室的请求类
*
* @author <a href="https://github.com/llw5181">小梁</a>
* @version 1.0 Create by 2024/10/28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCpOaMeetingRoomBookRequest implements Serializable, ToJson {
private static final long serialVersionUID = 2825289798463742536L;
/**
* 会议室Id
*/
@SerializedName("meetingroom_id")
private Integer meetingroomId;
/**
* 预定开始时间
*/
@SerializedName("start_time")
private Integer startTime;
/**
* 预定结束时间
*/
@SerializedName("end_time")
private Integer endTime;
/**
* 会议主题
*/
@SerializedName("subject")
private String subject;
/**
* 预定人的userid
*/
@SerializedName("booker")
private String booker;
/**
* 参与人的userid列表
*/
@SerializedName("attendees")
private List<String> attendees;

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

}
Loading