def get(self, **kwargs): uid = kwargs['uid'] mode = kwargs['mode'] item_id = int(kwargs['item_id']) user = hqby.user.get_user_info(uid=uid) if not user: raise HTTPError(403, 'can not found this user') if mode not in ['topic','comment']: raise HTTPError(400,'type not topic or comment') if mode == 'topic': #如果赞的是心得 先从缓存中找赞 没赞过的话就新建赞 key = "0"+uid+str(item_id) zan = model.like.get_zan(uid,item_id,0,key) if not zan: #更新心得里的like_num 新建赞 新建msg item = Topic.update_topic(item_id, True, False) item_data = Topic._topic_data(item) zan = {'user_id':str(uid),'item_id':item_data['topic_id'],'item_type':0} zan = model.like.create_like(zan) msg = self.create_msg('TL', user, item_data) self.write({'status':1,'type':mode,'like_num':item_data['like_num'],'uid':uid,'like_id':zan['id'],'msg':msg}) else: self.write({'status':0,'type':mode,'msg':'already liked'}) elif mode == 'comment': #如果赞的是评论 先从缓存中找赞 没赞过的话就新建赞 key = "1"+uid+str(item_id) zan = model.like.get_zan(uid,item_id,1,key) if not zan: item = Comment.update_comment(item_id,True) zan = {'user_id':str(uid),'item_id':item['id'],'item_type':1} zan = model.like.create_like(zan) msg = self.create_msg('CL', user, item) self.write({'status':1,'type':mode,'like_num':item['like_num'],'uid':uid,'like_id':zan['id'],'msg':msg}) else: self.write({'status':0,'type':mode,'msg':'already liked'}) return
def post(self, **kwargs): """ 新建一个评论 需要用户登录 """ token = self._get_token() uid = token['_id'] user = hqby.user.get_user_info(uid=uid) if not user: raise HTTPError(403, 'can not found this user') try: params = json_decode(self.request.body) except ValueError: params = self.get_form() comment_type = params.get('comment_type', False) self.check_comment_type(comment_type) self.check_topic(params['topic_id']) params['user_id'] = uid # 添加一个新的评论 comm = self.create_comment(params,comment_type) # self.write('haha = %s'%comm) #return data = self._comment_data(comm) data['is_liked'] = 0 topic = Topic.update_topic(data['topic_id'],False,True) topic_data = Topic._topic_data(topic) if data['to_user_id']: to_uid = data['to_user_id'] msg_type = 'CC' content = user['nick'] + '回复了你的评论 ' else: to_uid = topic_data['user_id'] msg_type = 'TC' content = user['nick'] + "评论了你的心得 " + " \"%s\""%topic_data['content'] if uid != to_uid: msg = Message.set_message(to_uid, msg_type, uid, content, topic_data['topic_id']) #link_id 是topic的id msg = Message._msg_data(msg) else: msg = 'you reply yourself' #给被回复者发送通知 baidu_apiKey = baidu_push_configs['apiKey'] baidu_secretKey = baidu_push_configs['secretKey'] bind_info = hqby.user.get_bind_info(to_uid) baidu_uid, baidu_cid = bind_info.get('baidu_uid'), bind_info.get('baidu_cid') if baidu_uid and baidu_cid and uid != to_uid: message = { 'title': '读经', 'description': '%s回复了你,快去看看吧' % user['nick'].encode('utf8'), 'open_type': 2, "aps": { "alert": '%s回复了你,快去看看吧' % user['nick'].encode('utf8'), "sound":"", "badge":0 }, } message = json.dumps(message) message_key = "sys" c = Channel(baidu_apiKey, baidu_secretKey, arr_curlOpts=dict(TIMEOUT=3, CONNECTTIMEOUT=5)) push_type = 1 # 1-单个人, 2-一群人, 3-全部人 optional = dict() optional[Channel.USER_ID] = baidu_uid optional[Channel.CHANNEL_ID] = int(baidu_cid) optional[Channel.MESSAGE_TYPE] = 1 # 0-消息, 1-通知 optional['device_types'] = [3, 4] # 4-ios, 3-安卓, 5-wp设备, 2-pc, 1-浏览器 optional['deploy_status'] = 1 if configs['debug'] else 2 # 1-开发, 2-生产 #job = c.pushMessage(push_type, message, message_key, optional) job = rq_client.default_queue.enqueue(c.pushMessage, push_type, message, message_key, optional) #logging.info('log for baidu pusher: %s', str(job)) self.write({'comment':data,'topic':topic_data,'msg':msg}) self.set_status(200) self.set_header('Content-Type', self._ct('json'))