class CategoryFacade: def __init__(self): self.category_repository = CategoryRepository() self.category_redis = CategoryRedis() def get_data(self,category_id,get_detail=True): ''' get_detail 是否需要获得分类的更详细信息 ''' category = None category = self.category_redis.get_data(category_id) if not category: category = self.category_repository.get_data(category_id) self.category_redis.set_data(category) #获取分类的上级分类和根分类信息 if get_detail: if category: if category.parent_category_id: category.parent_category = self.get_data(category.parent_category_id,False) category.root_category = self.get_data(category.root_category_id,False) return category def get_child_category_list(self,category_id): result = self.category_redis.get_child_category_list(category_id) if not result: result = self.category_repository.get_child_category_list(category_id) self.category_redis.set_child_category_list(category_id,result) return result def insert(self,category): self.category_repository.insert(category) def remove(self,category_id): self.category_repository.remove(category_id) self.category_redis.delete(category_id) def update(self,category): self.category_repository.update(category) #更新单条分类信息缓存 self.category_redis.delete(category.category_id) #更新其上级分类的子分类 self.category_redis.del_child_category_list(category.parent_category_id)
def __init__(self): self.category_repository = CategoryRepository() self.category_redis = CategoryRedis()
def __init__(self): self.article_repository = ArticleRepository() self.article_redis = ArticleRedis() self.category_repository = CategoryRepository()
class ArticleFacade: def __init__(self): self.article_repository = ArticleRepository() self.article_redis = ArticleRedis() self.category_repository = CategoryRepository() def get_data(self, id): result = self.article_redis.get_data(id) if not result: result = self.article_repository.get_data(id) if result and result.state: self.article_redis.set_data(id, result) return result def get_prev_data(self, id): result = None article = self.article_repository.get_prev_data(id) if article: result = self.get_data(article.id) return result def get_next_data(self, id): result = None article = self.article_repository.get_next_data(id, fields="id") if article: result = self.get_data(article.id) return result def search(self, category_id=0, recommend=0, topic_id=0, keyword=None, order="id desc", state=1, start=0, count=10): result = self.article_repository.search( category_id=category_id, topic_id=topic_id, recommend=recommend, keyword=keyword, order=order, state=state, start=start, count=count, fields="id", ) articles = list() for article in result["list"]: article = self.get_data(id=article.id) article.category = self.category_repository.get_data(article.category_id) articles.append(article) result["list"] = articles return result def delete(self, id): self.article_repository.delete(id) self.article_redis.delete(id) def post_data(self, article): if article.id: self.article_repository.update(article) article = self.article_repository.get_data(article.id) self.article_redis.set_data(article.id, article) return article.id else: return self.article_repository.insert(article) def update_hits(self, id): self.article_repository.update_hits(id) def update_download(self, id): self.article_repository.update_download(id) def update_state(self, id): self.article_repository.update_state(id) # 重新获取信息更新缓存 article = self.article_repository.get_data(id) self.article_redis.set_data(id, article) def update_recommend(self, id): self.article_repository.update_recommend(id) # 重新获取信息更新缓存 article = self.article_repository.get_data(id) self.article_redis.set_data(id, article) def get_total_hits(self): return self.article_repository.get_total_hits() def get_total_download(self): return self.article_repository.get_total_download() def update_smallpic(self, id, small_pic): result = self.article_repository.update_smallpic(id, small_pic) # 重新获取信息更新缓存 article = self.article_repository.get_data(id) self.article_redis.set_data(article)