def query_menus(db_session, id=None, returnList='tree'): if id is None: if returnList == 'tree': menus = [] parent = db_session.query(Menus).filter(Menus.parent_id == 0).order_by(Menus.order.asc()).all() for item in parent: children = db_session.query(Menus).filter(Menus.parent_id == item.id).order_by(Menus.order.asc()).all() menu = to_dict(item) if children: menu['children'] = to_dict(children) else: menu['children'] = None menus.append(menu) return { 'list': menus } else: menus = [] parent = db_session.query(Menus).filter(Menus.parent_id == 0).order_by(Menus.order.asc()).all() for item in parent: menus.append(to_dict(item)) children = db_session.query(Menus).filter(Menus.parent_id == item.id).order_by(Menus.order.asc()).all() if children: for ch in children: ch.name = '|------- ' + ch.name menus.append(to_dict(ch)) return { 'list': menus } else: return db_session.query(Menus).filter(Menus.id == id).first()
def get(self, link_id=None, **kwargs): if link_id is None: pager = Pager(self) result = yield self.async_do(FuncService.query_link,self.db, pager=pager) self.json_return({ 'code':0, 'data': to_dict(result) }) else: result = yield self.async_do(FuncService.query_link, self.db, link_id=link_id) self.json_return({ 'code':0, 'data': to_dict(result) })
def to_dict(self, data): """ 将 SqlAlchemy 查询的数据转成字典格式 :param data: :return: """ return to_dict(data)
def update_article_cache(db_session, cache_manager, async_do, id): """ 更新 或者 添加文章缓存 :param cache_manager: 缓存控制 :param async_do: 异步 :param db_session: 数据库连接 :param id: 文章查询标识id :return: """ result = yield async_do(ArticleService.query_article, db_session, id) if not result is None: if isinstance(result, dict): yield async_do( cache_manager.set, redis_cache_keys['cache_article_key'].format(id), json.dumps(result)) # cache_manager.set(redis_cache_keys['cache_article_key'].format(id), json.dumps(result)) else: try: yield async_do( cache_manager.set, redis_cache_keys['cache_article_key'].format(id), json.dumps(to_dict(result))) # cache_manager.set(redis_cache_keys['cache_article_key'].format(id), json.dumps(to_dict(result))) except Exception as e: logger.error('添加文章缓存失败 {0}'.format(e))
def save_login_user(self, user, authToken): """ 保存登录用户的信息 和 access Token :param user: :param authToken: :return: """ save_user = to_dict(user) save_user.pop('user_pass') self.cache_manager.remove(key=session_keys['login_user']) self.cache_manager.set(key=session_keys['login_user'], value=json.dumps(save_user), expire_time=self.session_expire_time) self.cache_manager.set(key=authToken, value=authToken, expire_time=session_keys['auth_token_expire_time'])
def get(self, menuId=None, **kwargs): if menuId is None: returnType = self.get_argument('return', 'tree') result = yield self.async_do(MenusService.query_menus, self.db, None, returnType) self.json_return({ 'code':0, 'data': result }) else: result = yield self.async_do(MenusService.query_menus, self.db, menuId) self.json_return({ 'code': 0, 'data': to_dict(result) })
def build_query(self, query): if self.pageSize != 0: ### 获取查询偏移量 offset = (self.page - 1) * self.pageSize if self.page > 0 else 0 ### 返回query对象 queryData = query.limit(self.pageSize).offset(offset).all() else: queryData = query.all() result = { 'list': to_dict(queryData), 'nextStart': self.page + 1 if self.has_next() else 0, 'pageSize': self.pageSize, 'totalNum': self.totalCount, 'hasMore': self.has_next() } return result