- 每个账户创建会议的时候携带可用的会议室列表,列表中所有的会议室都在使用则返回失败,否则创建会议占用方数最小的会议室
- 一个会议当人数达到了所在会议是最大方数的时候就需要升方,升方的时候判断是否有刚好方数大一级的会议室空闲,如果有则升方,否则失败
- 当前正在开的会议所属的umsuserid可用的会议室列表发生变化(用户入会时候携带的customercode_info)的时候只影响本会议,不影响此customuserid的其他会议
注意:会议室的方数不可变,但是每个人可分配的会议室列表可以发生变化
- Conference中分配的会议室信息 MeetingRoom
- 当前会议所属的 customercode
(customercode)_meeting_rooms -> {
会议室id1: json(包含会议室名字name,方数capacity,会议conference等信息)
会议室id2: json(包含会议室名字name,方数capacity,会议conference等信息)
}
struct MeetingRoom {
string name;
string id;
uint32_t capacity;
};
struct customercode_info {
string customer_code;
vector<MeetingRoom> meeting_rooms;
};
- 判断customercode_info与本地会议的customercode_info对比是否有增加,增加的话则去(customercode)_meeting_rooms中判断新添加的是否已经存在,没有存在的话更新到(customercode)_meeting_rooms
- 在(customercode)meeting_rooms中查询并且占用方数最小的会议室,没有的话则返回失败
上面两步在redis中原子操作
- 判断用户入会带的customercode_info与本地会议的customercode_info对比是否增加,增加的话则去(customercode)_meeting_rooms中判断新添加的是否已经存在,没有的话则更新到(customercode)_meeting_rooms
- 在(customercode)_meeting_rooms中查询当前会议室是否需要升方,如果需要升方则判断出是否有满足需求的会议室,没有的话则返回失败
上面两步在redis中原子操作