Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
 def __init__(self):
     self.category_repository = CategoryRepository()
     self.category_redis = CategoryRedis()
Ejemplo n.º 3
0
 def __init__(self):
     self.article_repository = ArticleRepository()
     self.article_redis = ArticleRedis()
     self.category_repository = CategoryRepository()
Ejemplo n.º 4
0
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)