Skip to content

Commit

Permalink
🆕 #3397【企业微信】增加会议室预定管理相关接口
Browse files Browse the repository at this point in the history
  • Loading branch information
llw5181 authored Oct 29, 2024
1 parent 9516398 commit 9c8ac1f
Show file tree
Hide file tree
Showing 15 changed files with 775 additions and 10 deletions.
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

0 comments on commit 9c8ac1f

Please sign in to comment.