def set_heard_user(self, question_id, user_id): heard = Heard(question_id, user_id) session.add(heard) session.commit() if heard: user = session.query(User).filter(User.id == user_id) user.update({'heard_num': User.heard_num + 1}) session.commit() question = session.query(Question).filter(Question.id == question_id) question.update({'listener_num': Question.listener_num}) session.commit() return heard
def toJson(self): ask_user = session.query(User).filter( User.id == self.ask_user_id).first().toJson() answer_user = session.query(User).filter( User.id == self.answer_user_id).first().toJson() return dict(id=self.id, state=self.state, content=self.content, price=self.price, public=self.public, listener_num=self.listener_num, voice_length=self.voice_length, voice_url=self.voice_url, create_time=self.create_time.strftime('%Y-%m-%d %H:%M:%S'), ask_user=ask_user, answer_user=answer_user)
def answer_question(self, id, length, url): question = session.query(Question).filter(Question.id == id) if question: question.update({'voice_length': length}) question.update({'voice_url': url}) question.update({'state': 1}) session.commit() user = session.query(User).filter( User.id == question.first().answer_user_id) user.update({'answer_num': User.answer_num + 1}) user.update({'earning': User.earning + question.first().price}) user.update({'income': User.income + question.first().price}) session.commit() return question.first() else: return question
def get_user_heard_questions(self, user_id, offset, size): res = session.query(Heard).filter(Heard.user_id == user_id).offset(offset).limit(size).all() question_list = [] if res: for x in res: question_list.append(x.toJson()) return question_list
def get_user_list(self, offset, size): res = session.query(User).order_by( User.answer_num.desc()).offset(offset).limit(size).all() user_list = [] if res: for x in res: user_list.append(x.toJson()) return user_list
def get_similar_users(self, keyword, offset, size): res = session.query(User).order_by(User.answer_num.desc()).filter( User.username.ilike( '%{}%'.format(keyword))).offset(offset).limit(size).all() user_list = [] if res: for x in res: user_list.append(x.toJson()) return user_list
def update_user_info(self, user_id, **kwargs): user_data = session.query(User).filter(User.id == user_id) if user_data: for key in kwargs: user_data.update({key: kwargs[key]}) session.commit() return user_data.first() else: return user_data
def login(self, third_party_uuid, username, icon, device_token): exist_user_data = session.query(User).filter( User.third_party_uuid == third_party_uuid).first() if exist_user_data: return exist_user_data new_user_data = User(third_party_uuid, username, icon, device_token) session.add(new_user_data) session.commit() return new_user_data
def get_similar_questions(self, keyword, offset, size): res = session.query(Question).order_by( Question.create_time.desc()).filter( Question.content.ilike( '%{}%'.format(keyword))).offset(offset).limit(size).all() question_list = [] if res: for x in res: question_list.append(x.toJson()) return question_list
def get_hot_questions(self, offset, size): res = session.query(Question).order_by( Question.create_time.desc()).filter( and_(Question.public == 1, Question.voice_url != None)).offset(offset).limit(size).all() question_list = [] if res: for x in res: question_list.append(x.toJson()) return question_list
def get_related_questions(self, type, user_id, offset, size): if type == 'history': res = session.query(Question).order_by( Question.create_time.desc()).filter( and_(Question.answer_user_id == user_id, Question.voice_url != None, Question.public == 1)).offset(offset).limit(size).all() elif type == 'ask': res = session.query(Question).order_by( Question.create_time.desc()).filter( Question.ask_user_id == user_id).offset(offset).limit( size).all() elif type == 'answer': res = session.query(Question).order_by( Question.create_time.desc()).filter( Question.answer_user_id == user_id).offset(offset).limit( size).all() question_list = [] if res: for x in res: question_list.append(x.toJson()) return question_list
def create_question(self, **kwargs): now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') question = Question(kwargs['content'], kwargs['price'], kwargs['public'], kwargs['ask_uuid'], kwargs['answer_uuid'], 0, now, 0) session.add(question) session.commit() if question: user = session.query(User).filter(User.id == question.ask_user_id) user.update({'ask_num': User.ask_num + 1}) session.commit() return question
def get_question_detail(self, id): question = session.query(Question).filter(Question.id == id).first() return question
def check_user_heard_question(self, user_id, question_id): heard = session.query(Heard).filter(and_(Heard.user_id == user_id, Heard.question_id == question_id)).all() return heard
def toJson(self): question = session.query(Question).filter(Question.id == self.question_id).first().toJson() return dict(id=self.id, question=question)
def get_user_info(self, user_id): user_data = session.query(User).filter(User.id == user_id).first() return user_data