예제 #1
0
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")
예제 #2
0
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")
예제 #3
0
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")
예제 #4
0
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
예제 #5
0
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")
예제 #6
0
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")
예제 #7
0
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'}))
예제 #8
0
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))
예제 #9
0
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))
예제 #10
0
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")
예제 #11
0
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")
예제 #12
0
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")
예제 #13
0
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")
예제 #14
0
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
예제 #15
0
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 = {
            '&quot;': '"',
            '&amp;': '&',
            '&lt;': '<',
            '&gt;': '>',
            '&apos;': "'",
            '&nbsp;': ' ',
            '&yen;': '¥',
            '&copy;': '©',
            '&divide;': '÷',
            '&hellip;': '…',
            '&times;': '×',
            '&middot;': '·',
        }
        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")