def get(self, request): ''' 获取通知 :param request: :return: ''' '''获取订单通知''' user = getUser(request.session.get('login')) orders = OrderNotification.objects.filter( Q(relatedUser=user) & Q(isRead=False)) comments = CommentNotifications.objects.filter( Q(aboutUser=user) & Q(isRead=False)) order_notification = [ model_to_dict(order, fields=self.orderNotificationFields) for order in orders ] '''获取评论通知''' comment_notification = [ model_to_dict(comment, fields=self.commentNotificationFields) for comment in comments ] return JsonResponse({ 'status': True, 'orderNotification': order_notification, 'commentNotification': comment_notification })
def get(self, request): ''' 获取当前用户的浏览记录(商品和帮助消息) :param request: :return: ''' try: user = User_Info.objects.get(email__exact=request.session.get('login')) commodityLog = CommodityViewLog.objects.filter(user=user) helpsLog = HelpsViewLog.objects.filter(user=user) commodityList = [commodity.commodity for commodity in commodityLog] helpsList = [helps.HelpsArticle for helps in helpsLog] commodityResult = [model_to_dict(commodity, fields=self.COMMODITY_INCLUDE_FIELDS) for commodity in commodityList] helpsResult = [model_to_dict(helps) for helps in helpsList] return JsonResponse({ 'status': True, 'commodity': commodityResult, 'helps': helpsResult }) except: return JsonResponse({ 'status': False, 'err': '意料之外的错误' }, status=403)
def get(self, request): ''' 获取当前登录用户信息 :param request: :return: ''' user = User_Info.objects.get(email=request.session.get('login')) userResult = model_to_dict(user, fields=self.USER_INCLUDE_FIELDS) if user.head_portrait: userResult[ 'head'] = 'https://algyunxs.oss-cn-shenzhen.aliyuncs.com/media/' + str( user.head_portrait) + '?x-oss-process=style/head_portrait' else: userResult['head'] = None if user.user_role == '5': userResult['email_active'] = False else: userResult['email_active'] = True if user.student_id != '0': userResult['es_check'] = True else: userResult['es_check'] = False return JsonResponse({ 'status': True, 'myself': userResult, })
def get(self, requests, pid): ''' 获得兼职消息详情 :param requests: :param pid: ptj id :return: ''' try: try: pObject = PTJInfo.objects.get(id=pid) except: return JsonResponse({ 'status': False, 'err': '内容不存在' }, status=404) ptjResult = model_to_dict(pObject) return JsonResponse({'status': True, 'ptj': ptjResult}) except: return JsonResponse({ 'status': False, 'err': '出现未知的错误' }, status=403)
def get(self, requests): ''' 获取互帮互助文章列表 :param requests: :return: ''' try: page = requests.GET.get('page') articleObj = Article.objects.all() articleList = paginator(articleObj, page) article = [ model_to_dict(art, exclude=self.EXCLUDE_FIELDS) for art in articleList if art.status == 'p' ] return JsonResponse({ 'status': True, 'articleList': article, 'has_previous': articleList.has_previous(), 'has_next': articleList.has_next(), }) except: return JsonResponse({ 'status': False, 'err': '出现未知的错误' }, status=403)
def get(self, requests): ''' 获取公告列表 :param requests: :return: ''' if requests.session.get('login'): try: user = getUser(requests.session.get('login')) if user.user_role != '515400': return JsonResponse({ 'status': False, 'err': '你没有权限' }, status=401) noticeList = Notice.objects.all() noticeListResult = [model_to_dict(notice) for notice in noticeList] return JsonResponse({ 'status': True, 'noticeList': noticeListResult }) except: return JsonResponse({ 'status': False, 'err': '出现未知错误' }, status=403) else: return JsonResponse({ 'status': False, 'err': '你还未登录' }, status=401)
def get(self, request, tid): ''' 根据标签获取文章 :param request: :param tid: :return: ''' try: page = request.GET.get('page') tag = Tag.objects.filter(id=tid) if not tag.exists(): return JsonResponse({ 'status': False, 'err': '标签不存在', }, status=404) tag = tag[0] article = Article.objects.filter(tags=tag) articleList = paginator(article, page) result = [ model_to_dict(art, exclude=self.EXCLUDE_FIELDS) for art in articleList if art.status == 'p' ] return JsonResponse({'status': True, 'article': result}) except: return JsonResponse({'status': False, 'err': '出现未知错误'}, status=403)
def get(self, request, aid): ''' 获取文章所有的评论 :param request: :param aid: :return: ''' article = Article.objects.filter(id=aid) if not article.exists(): return JsonResponse({'status': False, 'err': '文章不存在'}, status=404) article = article[0] result = [] user = User_Info.objects.get(email=request.session.get('login')) comments = article.comment.all() commentList = paginator(comments, request.GET.get('page')) i = 0 for comment in commentList: result.append(model_to_dict(comment)) if comment.from_author == user: result[i]['manage'] = True else: result[i]['manage'] = False if user.user_role == '515400' or user.user_role == '123': result[i]['admin'] = True else: result[i]['admin'] = False i += 1 return JsonResponse({ 'status': True, 'comment': result, 'has_previous': commentList.has_previous(), 'has_next': commentList.has_next() })
def get(self, request): ''' 获取文章分类列表 :param request: :return: ''' categoryAll = Category.objects.all() result = [model_to_dict(category) for category in categoryAll] return JsonResponse({'status': True, 'category': result})
def get(self, requests): ''' 获取最新的公告 :param requests: :return: ''' notice = Notice.objects.all() returnResult = model_to_dict(notice.first()) return JsonResponse({'status': True, 'notice': returnResult})
def get(self, requests): ''' 获取商品分类列表 :param requests: :return: ''' try: classificationAll = Classification.objects.all() result = [ model_to_dict(classification) for classification in classificationAll ] return JsonResponse({'status': True, 'classificationList': result}) except: return JsonResponse({'status': False, 'err': '未知错误'}, status=403)
def get(self, request): ''' 获取本人收藏的商品 :param request: :return: ''' userID = getUser(request.session.get('login')).id page = request.GET.get('login') cclt = CommodityCollection.objects.filter(relatedUser=userID) ccltPage = paginator(cclt, page) cidList = [ model_to_dict(c, fields='relatedCommodity') for c in ccltPage ] for i in range(len(cidList)): cidList[i] = cidList[i]['relatedCommodity']
def get(self, requests): ''' 获取兼职消息列表 :param requests: :return: ''' ptjAll = PTJInfo.objects.all() page = requests.GET.get('page') ptjList = paginator(ptjAll, page) ptj = [ model_to_dict(ptjs, exclude='create_time') for ptjs in ptjList if ptjs.status == 'p' ] return JsonResponse({'status': True, 'ptjList': ptj})
def get(self, request): ''' 获取用户列表 :param request: :return: ''' if authCheck(role='515400', email=request.session.get('login')): userList = User_Info.objects.all() return JsonResponse({ 'status': True, 'users': [model_to_dict(user, fields=self.INCLUDE_FIELDS) for user in userList] }) else: return JsonResponse({ 'status': False, 'err': '你没有权限' }, status=401)
def get(self, request, cid): ''' 获取商品评论列表 :param request: :param cid: :return: ''' try: commodity = Commodity.objects.filter(id=cid) if not commodity.exists(): return JsonResponse({ 'err': '商品不存在', 'status': False }, status=404) commodity = commodity[0] user = getUser(request.session.get('login')) result = [] comments = commodity.comment.all() commentList = paginator(comments, request.GET.get('page')) i = 0 for comment in commentList: result.append(model_to_dict(comment)) if comment.fromUser == user: result[i]['manage'] = True else: result[i]['manage'] = False if user.user_role == '515400' or user.user_role == '12': result[i]['admin'] = True else: result[i]['admin'] = False if CStarRecord.objects.filter( Q(comment=comment) & Q(star_man=user)).exists(): result[i]['stared'] = True else: result[i]['stared'] = False i += 1 return JsonResponse({ 'status': True, 'comment': result, 'has_previous': commentList.has_previous(), 'has_next': commentList.has_next() }) except: return JsonResponse({'err': '出现未知错误', 'status': False}, status=403)
def get(self, request, pid): ''' 获取互帮互助信息详情 :param request: :param pid: :return: ''' article = Article.objects.filter(id=pid) if not article.exists(): return JsonResponse({ 'status': False, 'err': '找不到该内容' }, status=404) article = article[0] user = User_Info.objects.get(email__exact=request.session.get('login')) if user != article.author: if article.status == 's': # 未发布的文章非作者无法直接查看 return JsonResponse({ 'status': False, 'err': '找不到该内容' }, status=404) if user != article.author: manage = False article.views += 1 else: manage = True if not HelpsStarRecord.objects.filter( Q(star_man=user) & Q(article=article) ).exists(): can_star = True else: can_star = False HelpsViewLog.objects.create( ip=request.META['REMOTE_ADDR'], user=user, HelpsArticle=article ) return JsonResponse({ 'status': True, 'article': model_to_dict(article, exclude=self.EXCLUDE_FIELDS), 'can_star': can_star, # 是否已对其点赞 'manage': manage # 是否是管理员 })
def get(self, request, cid, ocid): ''' 查看订单信息 :param request: :param cid: :param ocid: :return: ''' order = self.getOrder(cid, ocid) if not isinstance(order, CommodityOrder): return JsonResponse({'status': False, 'err': '订单未找到'}, status=404) user = getUser(request.session.get('login')) if user != order.commodity.seller or user != order.buyer: if user.user_role not in ['515400', '12']: return JsonResponse({ 'err': '你没有权限查看', 'status': False }, status=401) return JsonResponse({'status': True, 'order': model_to_dict(order)})
def get(self, request, uid): ''' 获取用户评价信息 :param request: :param uid: :return: ''' user = User_Info.objects.filter(id=uid) if not user.exists(): return JsonResponse({'status': False, 'err': '用户不存在'}, status=403) user = user[0] rates = BuyerRateModel.objects.filter( relatedOrder__commodity__seller=user) page = request.GET.get('page') rateList = paginator(rates, page) return JsonResponse({ 'status': True, 'rates': [model_to_dict(rate) for rate in rateList], 'has_next': rateList.has_next(), 'has_previous': rateList.has_previous() })
def get(self, request, cid): ''' 获取商品详情 :param request: :param cid: 商品id :return: ''' commodity = Commodity.objects.filter(id=cid) if not commodity.exists(): return JsonResponse({ 'status': False, 'err': '找不到该内容' }, status=404) commodity = commodity[0] user = User_Info.objects.get(email=request.session.get('login')) if user != commodity.seller: if commodity.status == 's': # 未发布的商品无法直接查看 return JsonResponse({ 'status': False, 'err': '找不到该内容' }, status=404) if commodity.seller == user: editable = True else: editable = False if user != commodity.seller: commodity.views += 1 CommodityViewLog.objects.create( ip=request.META['REMOTE_ADDR'], commodity=commodity, user=user ) commodity.save() cmdResult = model_to_dict(commodity, exclude=self.EXCLUDE_FIELDS) return JsonResponse({ 'status': True, 'editable': editable, # 属于自己的商品,可以修改、删除,但是不能购买 'commodity': cmdResult })
def get(self, request): ''' 获取文章标签列表(热度排名前十的标签) :param request: :return: ''' tags_all = Tag.objects.annotate(Count('article')) tag_count = [] for i in range(tags_all.count()): tag_count.append({ 'id': tags_all[i].id, 'count': tags_all[i].article__count }) id = [] for i in sorted(tag_count, key=itemgetter('count'), reverse=True)[:10]: id.append(i.get('id')) tags = [ model_to_dict(Tag.objects.get(id=tid), exclude='create_time') for tid in id ] return JsonResponse({'status': True, 'tags': tags})
def get(self, request, uid=0): ''' 用户控制台 :param request: :return: ''' if uid == 0: user = User_Info.objects.get(email=request.session.get('login')) else: user = User_Info.objects.filter(id=uid) if not user.exists(): return JsonResponse({ 'status': False, 'err': '用户不存在' }, status=404) user = user[0] articles = Article.objects.filter(author=user) markets = Commodity.objects.filter(seller=user) # ptj = PTJInfo.objects.filter(publisher=user) apage = request.GET.get('apage') mpage = request.GET.get('mpage') # ppge = request.GET.get('ppage') artList = paginator(articles, apage) marList = paginator(markets, mpage) # ptjList = paginator(ptj, ppge) artResult = [model_to_dict(art, exclude='comment') for art in artList] marResult = [model_to_dict(mar, exclude='comment') for mar in marList] # ptjResult = [model_to_dict(ptjs) for ptjs in ptjList] i = 0 for com in marResult: if marList[i].commodity_img.first(): com['commodity_img'] = 'https://algyunxs.oss-cn-shenzhen.aliyuncs.com/media/' + marList[ i].commodity_img.first( ).img.name + '?x-oss-process=style/head_portrait' else: com['commodity_img'] = None i += 1 return JsonResponse({ 'status': True, 'myself': True if getUser(request.session.get('login')).id == user.id else False, 'article': artResult, 'commodity': marResult, # 'PTJ': ptjResult, 'A_has_previous': artList.has_previous(), 'A_has_next': artList.has_next(), 'M_has_previous': marList.has_previous(), 'M_has_next': marList.has_next(), # 'P_has_previous': ptjList.has_previous(), # 'P_has_next': ptjList.has_next() })