def createArticleId(request): try: json_req = json.loads(request.body) type_id = json_req['type_id'] user_id = get_userid(json_req['token']) login_user = User.objects.get(user_id=user_id) # 先查询是否已经存在articleID article = Article.objects.filter(user_id=login_user, flag=3, title="") # article 已经存在则直接返回 if article.exists(): result = {'code': 200, 'article_id': article[0].article_id} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") else: article = Article(user_id=login_user, type_id=type_id, flag=3) # 保存文章 article.save() result = {'code': 200, 'article_id': article.article_id} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': '执行异常!' }), content_type="application/json")
def queryPointByUserId(request): json_req = json.loads(request.body) user_id = json_req['user_id'] login_user_id = get_userid(json_req['token']) # 当前登录用户的user_id article_count = Record.objects.filter(user_id=user_id, flag=1).count() # 用户点赞过的文章数量 page = json_req['page'] # 分页查询文章信息 page_info = PageInfo(page, 10) records = list( Record.objects.filter(user_id=user_id, flag=1).values( 'article_id', 'create_time').order_by("-create_time") [page_info.start():page_info.end()]) json_list = [] for record in records: json_dict = { "point_create_time": record['create_time'].strftime("%Y-%m-%d %H:%M:%S"), # 点赞时间 "article": queryArticleByArticleId(record['article_id']), "point_flag": queryPoint(login_user_id, record['article_id']), "collect_flag": queryCollect(login_user_id, record['article_id']), "photo": queryPhotoInfo(record['article_id']), "comment_count": getArticleCommentCount(record['article_id']), } json_list.append(json_dict) result = {'code': 200, 'article_count': article_count, 'data': json_list} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json")
def queryArticleByTypeId(request): try: json_req = json.loads(request.body) type_id = json_req['type_id'] user_id = get_userid(json_req['token']) order = check_order(json_req['order_type']) # 排序类型默认按时间,0 按时间,1 按阅读数,2 按点赞数 page = json_req['page'] # 分页查询文章信息 page_info = PageInfo(page, 10) article_count = Article.objects.filter(type_id=type_id, flag=1).count() articles = Article.objects.filter(type_id=type_id, flag=1).order_by(order)[page_info.start():page_info.end()] json_list = [] for article in articles: json_dict = {"article_id": article.article_id, "title": article.title, "simple_content": article.simple_content, "page_view": query_page_view(article.article_id), "create_time": article.create_time.strftime('%Y-%m-%d %H:%M:%S'), "point_count": query_point_count(article.article_id), "user": queryUserInfo(article.user_id.user_id), "point_flag": queryPoint(user_id, article.article_id), "photo": queryPhotoInfo(article.article_id), "comment_count": getArticleCommentCount(article.article_id), "level_name": getLevelName(getUserWriteCount(article.user_id.user_id), queryPointByUserId(article.user_id.user_id)) # 作者获得的称号 } json_list.append(json_dict) result = {'code': 200, 'article_count': article_count, 'article': json_list} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({'code': 405, 'information': '执行异常!'}, ensure_ascii=False), content_type="application/json")
def reset_password_by_email(request, token): print(token) if request.method == 'POST': # 解token 查找用户 user_id = get_userid(token) user = User.objects.get(user_id=user_id) json_req = json.loads(request.body) password = json_req['password'] re_password = json_req['re_password'] try: user = User.objects.get(user_id=user_id) except: return HttpResponse(json.dumps({'code': 401})) # 用户不存在 if re_password == password: # 验证两次密码是否相同 user.set_password(password) user.save() return HttpResponse( json.dumps({ 'code': 200, 'user_id': user.user_id, 'user_account': user.user_account, 'user_url': user.user_url, 'user_name': user.user_name, 'user_gender': user.user_gender, 'email': user.email, 'user_phone': user.user_phone, 'user_credit': user.user_credit })) # 修改成功 else: return HttpResponse(json.dumps({'code': 402})) # 两次密码不相同 else: return HttpResponse(json.dumps({'code': 404})) # 请求非post
def queryArticleDetailed(request): try: json_req = json.loads(request.body) user_id = get_userid(json_req['token']) # 当前用户 article_id = json_req['article_id'] up_page_view(article_id) # 再redis中将阅读数加一 article = Article.objects.get(article_id=article_id) collection_count = Collection.objects.filter(article_id=article_id).count() # 该文章已被多少人收藏 write_count = getUserWriteCount(article.user_id.user_id) user_point_count = queryPointByUserId(article.user_id.user_id) json_dict = {"article_id": article.article_id, "title": article.title, "content": article.content, "page_view": query_page_view(article.article_id), "create_time": article.create_time.strftime("%Y-%m-%d %H:%M:%S"), "point_count": query_point_count(article.article_id), "type_id": article.type_id, "type_name": getTypeName(article.type_id), "point_flag": queryPoint(user_id, article.article_id), "collect_flag": queryCollect(user_id, article.article_id), # 登录用户是否收藏该文章 "user_point_count": user_point_count, # 获取该文章的作者共获得多少赞 "user": queryUserInfo(article.user_id.user_id), # 获取作者基本信息 "comment_count": getArticleCommentCount(article.article_id), # 该文章有多少条评论 "write_count": write_count, "collection_count": collection_count, "level_name": getLevelName(write_count, user_point_count) # 作者获得的称号 } result = {'code': 200, 'article': json_dict} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({'code': 405, 'information': '执行异常!'}, ensure_ascii=False), content_type="application/json")
def pointArticle(request): json_req = json.loads(request.body) article_id = json_req['article_id'] user_id = get_userid(json_req['token']) # 当前用户 # 先查询是否已经存在点赞记录 record = Record.objects.filter(user_id=user_id, article_id=article_id) conn = get_redis_connection('default') point_count = query_point_count(article_id) # 在redis中获取文章的点赞量 if record.exists(): # 点赞已经存在取反后返回 flag = Record.objects.get(user_id=user_id, article_id=article_id).flag if flag == 0: # 原本为未点赞状态,点击后为用户点赞, record.update(create_time=datetime.now(), flag=1) Article.objects.filter(article_id=article_id).update( point_count=point_count + 1) # DB中点赞数要加一 conn.hset('article_point_count', article_id, point_count + 1) # 缓存中点赞数加一 return HttpResponse(json.dumps( { 'code': 200, 'point_count': point_count + 1, 'point_flag': 1 }, ensure_ascii=False), content_type="application/json") if flag == 1: # 原本为点赞状态,用户取消点赞,点赞数要减一 record.update(create_time=datetime.now(), flag=0) Article.objects.filter(article_id=article_id).update( point_count=point_count - 1) conn.hset('article_point_count', article_id, point_count - 1) return HttpResponse(json.dumps( { 'code': 200, 'point_count': point_count - 1, 'point_flag': 0 }, ensure_ascii=False), content_type="application/json") # 点赞记录不存在时,则创建记录 else: record = Record(article_id=article_id, user_id=user_id, create_time=datetime.now(), flag=1) record.save() Article.objects.filter(article_id=article_id).update( point_count=point_count + 1) conn.hset('article_point_count', article_id, point_count + 1) return HttpResponse(json.dumps( { 'code': 200, 'point_count': point_count + 1, 'point_flag': 1 }, ensure_ascii=False), content_type="application/json")
def check_token_validity(request): if request.method == 'POST': # 解token 查找用户 json_req = json.loads(request.body) token = json_req['token'] if check_token(token): user_id = get_userid(token) cache.set(user_id, token, TIME_OUT) return HttpResponse(json.dumps({'code': 200, 'info': 'token有效'})) else: return HttpResponse(json.dumps({'code': 401, 'info': 'token失效'})) else: return HttpResponse(json.dumps({'code': 404, 'info': '请求非post'}))
def delAllHistorySearch(request): try: json_req = json.loads(request.body) user_id = get_userid(json_req['token']) conn = get_redis_connection('default') history_key = "history_%d" % user_id # 移除全部记录 conn.delete(history_key) return HttpResponse(json.dumps({'code': 200})) except: return HttpResponse( json.dumps({ 'code': 405, 'information': '执行异常' }, ensure_ascii=False))
def rankSearch(request): try: json_req = json.loads(request.body) user_id = get_userid(json_req['token']) json_list = queryRankSearch() sku_ids = queryHistorySearch(user_id) result = {'code': 200, 'search': json_list, 'history': sku_ids} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse( json.dumps({ 'code': 405, 'information': '执行异常' }, ensure_ascii=False))
def collecteArticle(request): try: json_req = json.loads(request.body) article_id = json_req['article_id'] user_id = get_userid(json_req['token']) # 当前用户 # 先查询是否已经存在收藏记录 collection = Collection.objects.filter(user_id=user_id, article_id=article_id) # 收藏记录已经存在取反后返回 if collection.exists(): flag = Collection.objects.get(user_id=user_id, article_id=article_id).flag if flag == 0: collection.update(create_time=datetime.now(), flag=1) return HttpResponse(json.dumps({ 'code': 200, 'collect_flag': 1 }, ensure_ascii=False), content_type="application/json") if flag == 1: collection.update(create_time=datetime.now(), flag=0) return HttpResponse(json.dumps({ 'code': 200, 'collect_flag': 0 }, ensure_ascii=False), content_type="application/json") else: collection = Collection(article_id=article_id, user_id=user_id, create_time=datetime.now(), flag=1) collection.save() return HttpResponse(json.dumps({ 'code': 200, 'collect_flag': 1 }, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': '执行异常!' }), content_type="application/json")
def queryArticleByMyself(request): try: json_req = json.loads(request.body) user_id = json_req['user_id'] login_user_id = get_userid(json_req['token']) # 当前登录用户的user_id page = json_req['page'] # 分页查询文章信息 page_info = PageInfo(page, 10) article_count = Article.objects.filter(user_id=user_id, flag=1).count() articles = Article.objects.filter( user_id=user_id, flag=1).order_by("-create_time")[page_info.start():page_info.end()] json_list = [] for article in articles: json_dict = { "article_id": article.article_id, "title": article.title, "simple_content": article.simple_content, "page_view": query_page_view(article.article_id), "create_time": article.create_time.strftime("%Y-%m-%d %H:%M:%S"), "point_count": article.point_count, "type_id": article.type_id, "type_name": getTypeName(article.type_id), "point_flag": queryPoint(login_user_id, article.article_id), "collect_flag": queryCollect(login_user_id, article.article_id), "user": queryUserInfo(article.user_id.user_id), "photo": queryPhotoInfo(article.article_id), "comment_count": getArticleCommentCount(article.article_id), } json_list.append(json_dict) result = { 'code': 200, 'article_count': article_count, 'article': json_list } return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': '执行异常!' }), content_type="application/json")
def queryDraftBox(request): try: json_req = json.loads(request.body) user_id = get_userid(json_req['token']) page = json_req['page'] # 分页查询文章信息 page_info = PageInfo(page, 10) article_count = Article.objects.filter(user_id=user_id, flag=0).count() articles = Article.objects.filter( user_id=user_id, flag=0).order_by("-create_time")[page_info.start():page_info.end()] json_list = [] for article in articles: json_dict = { "article_id": article.article_id, "title": article.title, "simple_content": article.simple_content, "page_view": article.page_view, "create_time": article.create_time.strftime('%Y-%m-%d %H:%M:%S'), "type_id": article.type_id, "type_name": getTypeName(article.type_id), "photo": queryPhotoInfo(article.article_id) } json_list.append(json_dict) result = { 'code': 200, 'article_count': article_count, 'article': json_list } return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': '执行异常!' }), content_type="application/json")
def queryCollectionByUserId(request): try: json_req = json.loads(request.body) login_user_id = get_userid(json_req['token']) article_count = Collection.objects.filter( user_id=login_user_id, flag=1).count() # 获取该用户已收藏文章的数量 page = json_req['page'] # 分页查询文章信息 page_info = PageInfo(page, 10) collects = list( Collection.objects.filter( user_id=login_user_id, flag=1).values('article_id').order_by( "-create_time")[page_info.start():page_info.end()]) json_list = [] for collect in collects: json_dict = { "article": queryArticleByArticleId(collect['article_id']), "point_flag": queryPoint(login_user_id, collect['article_id']), "collect_flag": queryCollect(login_user_id, collect['article_id']), "photo": queryPhotoInfo(collect['article_id']), "comment_count": getArticleCommentCount(collect['article_id']), } json_list.append(json_dict) result = { 'code': 200, 'article_count': article_count, 'data': json_list } return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': '执行异常!' }), content_type="application/json")
def reset_password_by_email(request): if request.method == 'POST': # 解token 查找用户 json_req = json.loads(request.body) token = json_req['token'] password = json_req['password'] re_password = json_req['re_password'] user_id = get_userid(token) try: email = get_email(token) except: return HttpResponse(json.dumps({ 'code': 405, 'info': '获取email失败' })) # 获取email失败 try: last_token = cache.get(email) # 查redis内对应的email的token except: return HttpResponse( json.dumps({ 'code': 406, 'info': 'email没有token记录' })) # email没有token记录 if last_token == token: try: user = User.objects.get(user_id=user_id) except: return HttpResponse(json.dumps({ 'code': 401, 'info': '用户不存在' })) # 用户不存在 if re_password == password: # 验证两次密码是否相同 user.set_password(password) user.save() cache.set(email, "", 60) return HttpResponse( json.dumps({ 'code': 200, 'user_id': user.user_id, 'user_account': user.user_account, 'user_url': user.user_url, 'user_name': user.user_name, 'user_gender': user.user_gender, 'email': user.email, 'user_phone': user.user_phone, 'user_credit': user.user_credit })) # 修改成功 else: return HttpResponse( json.dumps({ 'code': 402, 'info': '两次密码不正确' })) # 两次密码不相同 else: return HttpResponse(json.dumps({ 'code': 403, 'info': 'token过期了' })) # token过期了 else: return HttpResponse(json.dumps({ 'code': 404, 'info': '请求非post' })) # 请求非post
def saveArticle(request): json_req = json.loads(request.body) article_id = json_req['article_id'] title = json_req['title'] type_id = json_req['type_id'] flag = json_req['flag'] content = json_req['content'] user_id = get_userid(json_req['token']) try: if type_id < 1001 or type_id > 1009: return HttpResponse(json.dumps({ 'code': 405, 'information': '参数异常!' }), content_type="application/json") if len(title) > 30: result = {'code': 406, 'information': '字数超过限制!'} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") dr = re.compile(r'<[^>]+>', re.S) filter_content = dr.sub('', content) tag = { '"': '"', '&': '&', '<': '<', '>': '>', ''': "'", ' ': ' ', '¥': '¥', '©': '©', '÷': '÷', '…': '…', '×': '×', '·': '·', } for k, v in tag.items(): filter_content = filter_content.replace(k, v) # 除去html里面的常用实体字符 login_user = User.objects.get(user_id=user_id) # 获得过滤标签后filter_content的字数 a = len(filter_content) # content的字数大于100则截取作为简介,否则就直接作为简介存储 if a > 100: simple_content = filter_content[0:100] else: simple_content = filter_content # flag=1,发布文章 if flag == 1: # 发表文章 article = Article(article_id=article_id, user_id=login_user, title=title, simple_content=simple_content, content=content, type_id=type_id, flag=1) article.save() # 积分+5 login_user.user_credit = login_user.user_credit + 5 login_user.save() # flag=0,保存草稿 else: article = Article(article_id=article_id, user_id=login_user, title=title, simple_content=simple_content, content=content, type_id=type_id, flag=0) article.save() result = {'code': 200} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json") except: return HttpResponse(json.dumps({ 'code': 405, 'information': 'sql执行异常!' }), content_type="application/json")