def add_bedroom(self): """添加卧室, 以及卧室入住信息""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('roid', 'bbrnum'), forbidden=('bbrid', 'bbrstatus')) room = self.sroom.get_room_by_roid(data.get('roid')) mod = {} data['bbrid'] = str(uuid.uuid4()) mod['BedroomBehindRoom'] = data if not room: raise NOT_FOUND(u'不存在的房源id') if 'bbrshowprice' in data: # 卧室未租出 data['BBRstatus'] = 2 elif 'usgender' in data: # 已经租出 data['BBRstatus'] = 5 mod['UserBedroomBehindRoom'] = { 'UBBRid': str(uuid.uuid4()), 'BBRid': data['bbrid'], 'USgender': data.get('usgender') } else: raise PARAMS_ERROR(u'缺少必要的参数') self.sroom.add_models(mod) cache.delete('room_detail::{}'.format(data.get('roid'))) return Success(u'添加成功', {'bbrid': data['bbrid']})
def add_homestay_banner(self): """添加民宿页的轮播图""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('hsbimage', 'hsbsort'), others='ignore') data['hsbid'] = str(uuid.uuid4()) model_bean = self.sroom.add_model('HomeStayBanner', data) cache.delete('home_stay_banner') return Success(u'添加成功', {'hsbid': data['hsbid']})
def delete_room_show_by_roid(self): if not is_admin(): raise AUTHORITY_ERROR('请使用管理员登录') data = parameter_required(('roid', )) room_index_show = self.sindex.delete_room_show_by_roid(data.get('roid')) cache.delete("get_index_room_list_data") # 删除缓存 message = u'取消成功' if room_index_show else u'要取消的房源不在首页' return Success(message, { 'roid': data.get('roid') })
def delete_homestay_banner(self): """删除民宿页的轮播图""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('hsbid', )) hsbid = data.get('hsbid') homestaybanner = self.sroom.delete_homestay_banner(hsbid) cache.delete('home_stay_banner') msg = u'删除成功' if homestaybanner else u'要删除的对象不存在' return Success(msg, {'hsbid': hsbid})
def delete_room_show(self): """删除首页显示的整租或合租房源""" if not is_admin(): raise AUTHORITY_ERROR('请使用管理员登录') data = parameter_required(('risid', )) room_index_show = self.sindex.delete_room_show_by_risid(data.get('risid')) cache.delete("get_index_room_list_data") # 删除缓存 message = u'删除成功' if room_index_show else u'要删除的对象不存在' return Success(message, { 'risid': data.get('risid') })
def add_room_show(self): """新建首页显示的合租整租公寓民宿, 必要的参数 房源id, type, 和顺序: """ if not is_admin(): raise AUTHORITY_ERROR('请使用管理员登录') data = parameter_required(('roid', 'rotype', 'rosort'), others='ignore') data['RISid'] = str(uuid.uuid4()) self.sindex.add_model('RoomIndexShow', data) cache.delete("get_index_room_list_data") # 删除缓存 return Success(u'添加成功', { 'risid': data['RISid'] })
def delete_room(self): """删除房源""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('roid', )) roid = data.get('roid') deleted = self.sroom.delete_room_by_roid(roid) # 同时取消在首页的显示 self.sindex.delete_room_show_by_roid(roid) cache.delete('room_detail::{}'.format(roid)) cache.delete("get_index_room_list_data") # 删除缓存 msg = u'删除成功' if deleted else u'无此记录' return Success(msg, {'roid': roid})
def update_bedroom(self): """更新卧室信息, 比如改为已租出, 或者价格之类""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('bbrid', )) bbrid = data.pop('bbrid') bedroom = self.sroom.get_bedroom_by_bbrid(bbrid) if not bedroom: raise NOT_FOUND(u'此卧室不存在') roid = bedroom.ROid if 'bbrshowprice' in data: # 需要改为未租出的状态 self.sroom.update_bedroom_by_bbrid( bbrid, { 'BBRshowprice': data.get('bbrshowprice'), 'BBRshowpriceunit': data.get('bbrshowpriceunit', 'month'), 'BBRstatus': 2 }) userbedroom = self.sroom.update_roomates_info_by_bbrid( bbrid, {'UBBRstatus': 1}) # 同时需要更新卧室住户的状态 msg = u'改为未入住成功' elif 'usgender' in data: # 需要改为入住状态 self.sroom.update_bedroom_by_bbrid(bbrid, {"BBRstatus": 5}) # 同时需要添加入住信息, 修改以往的入住信息为已搬(如果有) self.sroom.update_roomates_info_by_bbrid(bbrid, {'UBBRstatus': 1}) model_dict = dict(UBBRid=str(uuid.uuid4()), BBRid=bbrid, USgender=data.get('usgender')) mod = dict(UserBedroomBehindRoom=model_dict) self.sroom.add_models(mod) msg = u'改为已入住成功' else: raise PARAMS_ERROR(u'缺少必要的参数') cache.delete('room_detail::{}'.format(roid)) return Success(msg, {'bbrid': bbrid})
def update_room(self): """更新房源信息""" if not is_admin(): raise TOKEN_ERROR(u'请使用管理员登录') data = parameter_required(('roid', )) roid = data.get('roid') # 房源主体的参数 # house信息 # medias信息 # tags # roomequi设备 # 公寓信息 house = data.pop('house', None) medias = data.pop('medias', []) tags = data.pop('tags', []) roomrequirment = data.pop('roomrequirment', None) room = self.sroom.get_room_by_roid(roid) if not room: raise NOT_FOUND(u'无此房源') room_data = { 'ROname': data.get('roname'), 'ROimage': data.get('roimage'), 'ROareanum': data.get('roareanum'), 'ROface': data.get('roface'), 'ROarea': data.get('roarea'), 'ROshowpriceunit': data.get('roshowpriceunit'), 'ROrenttype': data.get('rorenttype'), 'ROdecorationstyle': data.get('rodecorationstyle'), 'ROshowprice': data.get('roshowprice'), 'ROcitynum': data.get('rocitynum'), 'ROsubwayaround': data.get('rosubwayaround'), 'STFid': data.get('stfid') } room_data = {k: v for k, v in room_data.items() if v is not None} if not room_data: raise PARAMS_ERROR('修改room需要的参数缺失') room_updated = self.sroom.update_room_by_roid(roid, room_data) print('更新了room') if house: hoid = room.ROid houseinfo_required = ('hofloor', 'hototalfloor', 'hobedroomcount', 'hoparlorcount') parameter_required(houseinfo_required, datafrom=house) house_data = { 'HOfloor': house.get('hofloor'), 'HOtotalfloor': house.get('hototalfloor'), 'HObedroomcount': house.get('hobedroomcount'), 'HOparlorcount': house.get('hoparlorcount'), } house_updated = self.sroom.update_house_by_hoid(hoid, house_data) if medias: # 此处接受到的media数据是没有删除的和信添加的, 删除的将不会在传过来 # 此处有点罗嗦, 只需删除原来的数据, 再重新添加即可 deleted = self.sroom.delete_room_media_by_roid(roid) for new_media in medias: new_media['reid'] = str(uuid.uuid4()) new_media['roid'] = roid self.sroom.add_model('RoomMedia', new_media) print('添加多媒体') if tags: # 删除原来的tag self.sroom.delete_tag_by_roid(roid) print('删除了原来的tag') mod = {} mod['RoomTag'] = [] for tag in tags: tag['roid'] = roid tag['rtid'] = str(uuid.uuid4()) mod['RoomTag'].append(tag) self.sroom.add_models(mod) print('添加tag') if roomrequirment: self.sroom.delete_room_equirment_by_roid(roid) print('删除了原来的设备') roomrequirment['roid'] = roid roomrequirment['reid'] = str(uuid.uuid4()) self.sroom.add_model('RoomEquirment', roomrequirment) print('修改设备') if 'villegeid' in data: hoid = room.HOid # house = self.sroom.get_house_by_hoid(hoid) villege = self.sroom.get_villege_info_by_id(data.get('villegeid')) if not villege: raise PARAMS_ERROR(u'villege id有误') self.sroom.update_house_by_hoid(hoid, {'VIid': data.get('villegeid')}) cache.delete('room_detail::{}'.format(roid)) cache.delete("get_index_room_list_data") # 删除缓存 return Success(u'修改成功', {'roid': roid})