统计分类商品访问量

提示:

  • 统计分类商品访问量 是统计一天内该类别的商品被访问的次数。
  • 需要统计的数据,包括商品分类,访问次数,访问时间。
  • 一天内,一种类别,统计一条记录。

1. 统计分类商品访问量模型类

模型类定义在goods.models.py中,然后完成迁移建表。

class GoodsVisitCount(BaseModel):
    """统计分类商品访问量模型类"""
    category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, verbose_name='商品分类')
    count = models.IntegerField(verbose_name='访问量', default=0)
    date = models.DateField(auto_now_add=True, verbose_name='统计日期')

    class Meta:
        db_table = 'tb_goods_visit'
        verbose_name = '统计分类商品访问量'
        verbose_name_plural = verbose_name

2. 统计分类商品访问量后端逻辑

1.请求方式

选项 方案
请求方法 POST
请求地址 /detail/visit/<category_id>/

2.请求参数:路径参数

参数名 类型 是否必传 说明
category_id string 商品分类id

3.响应结果:JSON

字段 说明
code 状态码
errmsg 错误信息

4.后端接口定义和实现

  • 如果访问记录存在,说明今天不是第一次访问,不新建记录,访问量直接累加。
  • 如果访问记录不存在,说明今天是第一次访问,新建记录并保存访问量。
class DetailVisitView(View):
    """详情页分类商品访问量"""

       def post(self, request, category_id):
            try:
                # 1.获取当前商品
                category = GoodsCategory.objects.get(id=category_id)
            except Exception as e:
                return JsonResponse({'code': 400, 'errmsg': '缺少必传参数'})

            # 2.查询日期数据
            from datetime import date
            # 获取当天日期
            today_date = date.today()

            from apps.goods.models import GoodsVisitCount
            try:
                # 3.如果有当天商品分类的数据  就累加数量
                count_data = category.goodsvisitcount_set.get(date=today_date)
            except:
                # 4. 没有, 就新建之后在增加
                count_data = GoodsVisitCount()

            try:
                count_data.count += 1
                count_data.category = category
                count_data.save()
            except Exception as e:
                return JsonResponse({'code': 400, 'errmsg': '新增失败'})

            return JsonResponse({'code': 0, 'errmsg': 'OK'})