Skip to content

Commit 9c8ac1f

Browse files
authored
🆕 #3397【企业微信】增加会议室预定管理相关接口
1 parent 9516398 commit 9c8ac1f

15 files changed

+775
-10
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOaMeetingRoomService.java

+97-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package me.chanjar.weixin.cp.api;
22

33
import me.chanjar.weixin.common.error.WxErrorException;
4-
import me.chanjar.weixin.cp.bean.oa.meetingroom.WxCpOaMeetingRoom;
4+
import me.chanjar.weixin.cp.bean.oa.meetingroom.*;
55

66
import java.util.List;
77

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

6161
/**
62-
* 编辑会议室.
62+
* 删除会议室.
6363
* <pre>
64-
* 该接口用于通过应用在企业内编辑会议室
64+
* 企业可通过此接口删除指定的会议室
6565
* 请求方式: POST(HTTPS)
6666
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/del?access_token=ACCESS_TOKEN
6767
*
6868
* 文档地址:https://developer.work.weixin.qq.com/document/path/93619
6969
* </pre>
7070
*
71-
* @param meetingRoomId 会议室对象
71+
* @param meetingRoomId 会议室ID
7272
* @throws WxErrorException .
7373
*/
7474
void deleteMeetingRoom(Integer meetingRoomId) throws WxErrorException;
75+
76+
/**
77+
* 查询会议室的预定信息.
78+
* <pre>
79+
* 企业可通过此接口查询相关会议室在指定时间段的预定情况,如是否已被预定,预定者的userid等信息,不支持跨天查询。
80+
* 请求方式: POST(HTTPS)
81+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/get_booking_info?access_token=ACCESS_TOKEN
82+
*
83+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
84+
* </pre>
85+
*
86+
* @param wxCpOaMeetingRoomBookingInfoRequest 会议室预定信息查询对象
87+
* @throws WxErrorException .
88+
*/
89+
WxCpOaMeetingRoomBookingInfoResult getMeetingRoomBookingInfo(WxCpOaMeetingRoomBookingInfoRequest wxCpOaMeetingRoomBookingInfoRequest) throws WxErrorException;
90+
91+
/**
92+
* 预定会议室.
93+
* <pre>
94+
* 企业可通过此接口预定会议室并自动关联日程。
95+
* 请求方式: POST(HTTPS)
96+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book?access_token=ACCESS_TOKEN
97+
*
98+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
99+
* </pre>
100+
*
101+
* @param wxCpOaMeetingRoomBookRequest 会议室预定对象
102+
* @throws WxErrorException .
103+
*/
104+
WxCpOaMeetingRoomBookResult bookingMeetingRoom(WxCpOaMeetingRoomBookRequest wxCpOaMeetingRoomBookRequest) throws WxErrorException;
105+
106+
/**
107+
* 通过日程预定会议室.
108+
* <pre>
109+
* 企业可通过此接口为指定日程预定会议室,支持重复日程预定。
110+
* 请求方式: POST(HTTPS)
111+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book_by_schedule?access_token=ACCESS_TOKEN
112+
*
113+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
114+
* </pre>
115+
*
116+
* @param wxCpOaMeetingRoomBookByScheduleRequest 会议室预定对象
117+
* @throws WxErrorException .
118+
*/
119+
WxCpOaMeetingRoomBookResult bookingMeetingRoomBySchedule(WxCpOaMeetingRoomBookByScheduleRequest wxCpOaMeetingRoomBookByScheduleRequest) throws WxErrorException;
120+
121+
/**
122+
* 通过会议预定会议室.
123+
* <pre>
124+
* 企业可通过此接口为指定会议预定会议室,支持重复会议预定。
125+
* 请求方式: POST(HTTPS)
126+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/book_by_meeting?access_token=ACCESS_TOKEN
127+
*
128+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
129+
* </pre>
130+
*
131+
* @param wxCpOaMeetingRoomBookByMeetingRequest 会议室预定对象
132+
* @throws WxErrorException .
133+
*/
134+
WxCpOaMeetingRoomBookResult bookingMeetingRoomByMeeting(WxCpOaMeetingRoomBookByMeetingRequest wxCpOaMeetingRoomBookByMeetingRequest) throws WxErrorException;
135+
136+
137+
/**
138+
* 取消预定会议室.
139+
* <pre>
140+
* 企业可通过此接口取消会议室的预定
141+
* 请求方式: POST(HTTPS)
142+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/cancel_book?access_token=ACCESS_TOKEN
143+
*
144+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
145+
* </pre>
146+
*
147+
* @param wxCpOaMeetingRoomCancelBookRequest 取消预定会议室对象
148+
* @throws WxErrorException .
149+
*/
150+
void cancelBookMeetingRoom(WxCpOaMeetingRoomCancelBookRequest wxCpOaMeetingRoomCancelBookRequest) throws WxErrorException;
151+
152+
153+
/**
154+
* 根据会议室预定ID查询预定详情.
155+
* <pre>
156+
* 企业可通过此接口根据预定id查询相关会议室的预定情况
157+
* 请求方式: POST(HTTPS)
158+
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/oa/meetingroom/bookinfo/get?access_token=ACCESS_TOKEN
159+
*
160+
* 文档地址:https://developer.work.weixin.qq.com/document/path/93620
161+
* </pre>
162+
*
163+
* @param wxCpOaMeetingRoomBookingInfoByBookingIdRequest 根据会议室预定ID查询预定详情对象
164+
* @throws WxErrorException .
165+
*/
166+
WxCpOaMeetingRoomBookingInfoByBookingIdResult getBookingInfoByBookingId(WxCpOaMeetingRoomBookingInfoByBookingIdRequest wxCpOaMeetingRoomBookingInfoByBookingIdRequest) throws WxErrorException;
167+
75168
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOaMeetingRoomServiceImpl.java

+37-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import me.chanjar.weixin.common.util.json.GsonParser;
88
import me.chanjar.weixin.cp.api.WxCpOaMeetingRoomService;
99
import me.chanjar.weixin.cp.api.WxCpService;
10-
import me.chanjar.weixin.cp.bean.oa.meetingroom.WxCpOaMeetingRoom;
10+
import me.chanjar.weixin.cp.bean.oa.meetingroom.*;
1111
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
1212

1313
import java.util.List;
@@ -48,4 +48,40 @@ public void deleteMeetingRoom(Integer meetingRoomId) throws WxErrorException {
4848
this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_DEL),
4949
GsonHelper.buildJsonObject("meetingroom_id", meetingRoomId));
5050
}
51+
52+
@Override
53+
public WxCpOaMeetingRoomBookingInfoResult getMeetingRoomBookingInfo(WxCpOaMeetingRoomBookingInfoRequest wxCpOaMeetingRoomBookingInfoRequest) throws WxErrorException {
54+
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_GET_BOOKING_INFO), wxCpOaMeetingRoomBookingInfoRequest);
55+
return WxCpOaMeetingRoomBookingInfoResult.fromJson(response);
56+
}
57+
58+
@Override
59+
public WxCpOaMeetingRoomBookResult bookingMeetingRoom(WxCpOaMeetingRoomBookRequest wxCpOaMeetingRoomBookRequest) throws WxErrorException {
60+
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK), wxCpOaMeetingRoomBookRequest);
61+
return WxCpOaMeetingRoomBookResult.fromJson(response);
62+
}
63+
64+
@Override
65+
public WxCpOaMeetingRoomBookResult bookingMeetingRoomBySchedule(WxCpOaMeetingRoomBookByScheduleRequest wxCpOaMeetingRoomBookByScheduleRequest) throws WxErrorException {
66+
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK_BY_SCHEDULE), wxCpOaMeetingRoomBookByScheduleRequest);
67+
return WxCpOaMeetingRoomBookResult.fromJson(response);
68+
}
69+
70+
@Override
71+
public WxCpOaMeetingRoomBookResult bookingMeetingRoomByMeeting(WxCpOaMeetingRoomBookByMeetingRequest wxCpOaMeetingRoomBookByMeetingRequest) throws WxErrorException {
72+
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOK_BY_MEETING), wxCpOaMeetingRoomBookByMeetingRequest);
73+
return WxCpOaMeetingRoomBookResult.fromJson(response);
74+
}
75+
76+
@Override
77+
public void cancelBookMeetingRoom(WxCpOaMeetingRoomCancelBookRequest wxCpOaMeetingRoomCancelBookRequest) throws WxErrorException {
78+
this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_CANCEL_BOOK), wxCpOaMeetingRoomCancelBookRequest);
79+
80+
}
81+
82+
@Override
83+
public WxCpOaMeetingRoomBookingInfoByBookingIdResult getBookingInfoByBookingId(WxCpOaMeetingRoomBookingInfoByBookingIdRequest wxCpOaMeetingRoomBookingInfoByBookingIdRequest) throws WxErrorException {
84+
String response = this.wxCpService.post(this.wxCpService.getWxCpConfigStorage().getApiUrl(MEETINGROOM_BOOKINFO_GET), wxCpOaMeetingRoomBookingInfoByBookingIdRequest);
85+
return WxCpOaMeetingRoomBookingInfoByBookingIdResult.fromJson(response);
86+
}
5187
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java

+13
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,19 @@ public class WxCpXmlMessage implements Serializable {
386386
@XStreamConverter(value = XStreamCDataConverter.class)
387387
private String calId;
388388

389+
/**
390+
* 会议室ID.
391+
*/
392+
@XStreamAlias("MeetingRoomId")
393+
private String meetingRoomId;
394+
395+
/**
396+
* 会议室预定id,可根据该ID查询具体的会议预定情况
397+
*/
398+
@XStreamAlias("BookingId")
399+
@XStreamConverter(value = XStreamCDataConverter.class)
400+
private String bookingId;
401+
389402
/**
390403
* 扩展属性.
391404
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package me.chanjar.weixin.cp.bean.oa.meetingroom;
2+
3+
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
import lombok.experimental.Accessors;
10+
import me.chanjar.weixin.common.bean.ToJson;
11+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
12+
13+
import java.io.Serializable;
14+
15+
/**
16+
* 通过会议预定会议室
17+
*
18+
* @author <a href="https://github.com/llw5181">小梁</a>
19+
* @version 1.0 Create by 2024/10/28
20+
*/
21+
@Data
22+
@Builder
23+
@NoArgsConstructor
24+
@AllArgsConstructor
25+
@Accessors(chain = true)
26+
public class WxCpOaMeetingRoomBookByMeetingRequest implements Serializable, ToJson {
27+
private static final long serialVersionUID = 2825289798463742531L;
28+
/**
29+
* 会议室Id
30+
*/
31+
@SerializedName("meetingroom_id")
32+
private Integer meetingroomId;
33+
/**
34+
* 会议id,仅可使用同应用创建的会议
35+
*/
36+
@SerializedName("meetingid")
37+
private String meetingid;
38+
/**
39+
* 预定人的userid
40+
*/
41+
@SerializedName("booker")
42+
private String booker;
43+
44+
45+
@Override
46+
public String toJson() {
47+
return WxCpGsonBuilder.create().toJson(this);
48+
}
49+
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package me.chanjar.weixin.cp.bean.oa.meetingroom;
2+
3+
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
import lombok.experimental.Accessors;
10+
import me.chanjar.weixin.common.bean.ToJson;
11+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
12+
13+
import java.io.Serializable;
14+
15+
/**
16+
* 通过日程预定会议室
17+
*
18+
* @author <a href="https://github.com/llw5181">小梁</a>
19+
* @version 1.0 Create by 2024/10/28
20+
*/
21+
@Data
22+
@Builder
23+
@NoArgsConstructor
24+
@AllArgsConstructor
25+
@Accessors(chain = true)
26+
public class WxCpOaMeetingRoomBookByScheduleRequest implements Serializable, ToJson {
27+
private static final long serialVersionUID = 2825289798463742532L;
28+
/**
29+
* 会议室Id
30+
*/
31+
@SerializedName("meetingroom_id")
32+
private Integer meetingroomId;
33+
/**
34+
* 日程id,仅可使用同应用创建的日程
35+
*/
36+
@SerializedName("schedule_id")
37+
private String schedule_id;
38+
/**
39+
* 预定人的userid
40+
*/
41+
@SerializedName("booker")
42+
private String booker;
43+
44+
45+
@Override
46+
public String toJson() {
47+
return WxCpGsonBuilder.create().toJson(this);
48+
}
49+
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package me.chanjar.weixin.cp.bean.oa.meetingroom;
2+
3+
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
import lombok.experimental.Accessors;
10+
import me.chanjar.weixin.common.bean.ToJson;
11+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
12+
13+
import java.io.Serializable;
14+
import java.util.List;
15+
16+
/**
17+
* 预定会议室的请求类
18+
*
19+
* @author <a href="https://github.com/llw5181">小梁</a>
20+
* @version 1.0 Create by 2024/10/28
21+
*/
22+
@Data
23+
@Builder
24+
@NoArgsConstructor
25+
@AllArgsConstructor
26+
@Accessors(chain = true)
27+
public class WxCpOaMeetingRoomBookRequest implements Serializable, ToJson {
28+
private static final long serialVersionUID = 2825289798463742536L;
29+
/**
30+
* 会议室Id
31+
*/
32+
@SerializedName("meetingroom_id")
33+
private Integer meetingroomId;
34+
/**
35+
* 预定开始时间
36+
*/
37+
@SerializedName("start_time")
38+
private Integer startTime;
39+
/**
40+
* 预定结束时间
41+
*/
42+
@SerializedName("end_time")
43+
private Integer endTime;
44+
/**
45+
* 会议主题
46+
*/
47+
@SerializedName("subject")
48+
private String subject;
49+
/**
50+
* 预定人的userid
51+
*/
52+
@SerializedName("booker")
53+
private String booker;
54+
/**
55+
* 参与人的userid列表
56+
*/
57+
@SerializedName("attendees")
58+
private List<String> attendees;
59+
60+
@Override
61+
public String toJson() {
62+
return WxCpGsonBuilder.create().toJson(this);
63+
}
64+
65+
}

0 commit comments

Comments
 (0)