小程序支付-再次签名-商城表的设计-热销产品展示

Posted 游走的提莫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序支付-再次签名-商城表的设计-热销产品展示相关的知识,希望对你有一定的参考价值。

 后台的login功能实现

from rest_framework.views import APIView
from rest_framework.response import Response
from django.core.cache import cache
from app01 import models
import hashlib,time
from app01.wx import wx_Login

class Login(APIView):
    def post(self,request):
        param = request.data
        if param.get("code"):
            data = wx_Login.login(param.get(\'code\'))
            if data:
                val = data[\'openid\']+"&"+data["session_key"]
                key = str(int(time.time())+data[\'openid\'])
                # 加密验证签发
                md5 = hashlib.md5()
                md5.update(key.encode("utf-8"))
                key = md5.hexdigest()
                cache.set(key,val)

                has_user = models.Wxuser.objects.filter(openid=data[\'openid\']).first()
                if not has_user:
                    models.Wxuser.objects.create(openid=data[\'openid\'])
                return Response({"code":200,"msg":"ok","data":{"login_key":key}})
            else:
                return Response({"code":200,"msg":"code错误"})
        else:
            return Response({"code":200,"msg":"缺少参数"})

前台调用认证登录

 商城表的设计

# Create your models here.
class Wxuser(models.Model):
    id = models.AutoField(primary_key=True)
    openid=models.CharField(max_length=255)
    name = models.CharField(max_length=50)
    avatar = models.CharField(max_length=200)
    language = models.CharField(max_length=50)
    province = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    gender = models.CharField(max_length=50),
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.openid

class Category(models.Model):
    cat_id=models.AutoField(primary_key=True)
    category_name=models.CharField(max_length=50)
    parent=models.ForeignKey(to=\'Category\', to_field=\'cat_id\', related_name="Category", on_delete=models.CASCADE, db_constraint=False,blank=True,null=True)
    p_order=models.IntegerField(default=0)
    is_show =models.BooleanField(default=1)
    image = models.OneToOneField(to=\'Images\', to_field=\'image_id\', on_delete=models.CASCADE, db_constraint=False,null=True)
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.category_name

class Images(models.Model):
    image_id=models.AutoField(primary_key=True)
    name=models.CharField(max_length=30,default="0")
    image_url=models.ImageField(upload_to="")
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.name

class Product(models.Model):
    product_id=models.AutoField(primary_key=True)
    name=models.CharField(max_length=200)
    price=models.DecimalField(max_digits=10, decimal_places=2)
    weight=models.IntegerField(default=0)
    cat = models.ForeignKey(to="Category", to_field="cat_id", related_name="Product", db_constraint=False, on_delete=models.CASCADE)
    intor = models.TextField(max_length=250)#详细介绍
    brief = models.TextField(max_length=250)#商品简介
    image=models.OneToOneField(to=\'Images\',to_field=\'image_id\',on_delete=models.CASCADE,db_constraint=False)
    stock = models.OneToOneField(to="Stock", to_field="stock_id", db_constraint=False, on_delete=models.CASCADE)
    buy_count=models.IntegerField(default=0)#购买量
    disabled = models.BooleanField(default=1)#是否显示
    w_order=models.IntegerField(default=0)#权重
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.name

class Order(models.Model):
    order_id = models.CharField(max_length=50, unique=True, primary_key=True)
    status_choices = (("active", \'活动订单\'), ("dead", \'作废订单\'), ("finish", \'已完成订单\'))
    status = models.CharField(choices=status_choices, default="active", max_length=50)
    pay_status_choices = ((0, \'未付款\'), (1, \'已付款\'))
    pay_status = models.SmallIntegerField(choices=pay_status_choices, default=0)
    payed = models.DecimalField(max_digits=10, decimal_places=2,default=0)
    order_total = models.DecimalField(max_digits=10, decimal_places=2,default=0)
    ship_status_choices = ((0, \'未发货\'), (1, \'已发货\'))
    pay_app = models.CharField(max_length=100)
    wxuser = models.ForeignKey(to="Wxuser", to_field="id", related_name="Order", db_constraint=False,on_delete=models.CASCADE)
    quantity = models.IntegerField(default=0)
    memo = models.CharField(max_length=200, default=0)
    consignee_name = models.CharField(max_length=200, default=0)
    consignee_area = models.CharField(max_length=200, default=0)
    consignee_address = models.CharField(max_length=200, default=0)
    consignee_zip = models.CharField(max_length=200, default=0)
    consignee_mobile = models.CharField(max_length=200,default=0)
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.order_id

class Order_items(models.Model):
    item_id = models.AutoField(primary_key=True)
    order= models.ForeignKey(to="Order", to_field="order_id", related_name="Order_items", db_constraint=False,on_delete=models.CASCADE)
    product=models.ForeignKey(to="Product", to_field="product_id", related_name="Order_items", db_constraint=False,on_delete=models.CASCADE,null=True)
    name = models.CharField(max_length=200)
    image = models.ForeignKey(to=\'Images\', to_field=\'image_id\',related_name="Order_items", on_delete=models.CASCADE,db_constraint=False)
    price = models.DecimalField(max_digits=10, decimal_places=2,default=0)
    amount=models.DecimalField(max_digits=10, decimal_places=2,default=0)
    nums=models.IntegerField()
    send_nums=models.IntegerField(null=True)
    brief=models.CharField(max_length=200)
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)

class Stock(models.Model):
    stock_id=models.AutoField(primary_key=True)
    name=models.CharField(max_length=100)
    quantity=models.IntegerField(default=0)#库存量
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.name

class Banner(models.Model):
    product = models.OneToOneField(to="Product", to_field="product_id", db_constraint=False, on_delete=models.CASCADE)
    w_order = models.IntegerField(default=0)  # 权重
    image = models.OneToOneField(to=\'Images\', to_field=\'image_id\', on_delete=models.CASCADE, db_constraint=False)
    is_show =models.BooleanField(default=1)
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):

 轮播图的实现

 

 后端

from rest_framework.views import APIView
from rest_framework.response import  Response
from  app01 import models
from app01.my_ser import Banner_ser


class List(APIView):
    def post(self,request):
        data = models.Banner.objects.filter(is_show=True).order_by("-w_order")
        data = Banner_ser.Banner_ser(instance=data,many=True,context={"request":request}).data
        return Response({
            "code":200,
            "msg":"ok",
            "data":data
        })

序列化类

from rest_framework import serializers
from app01 import models
class Banner_ser(serializers.ModelSerializer):
    image_url = serializers.ImageField(source="image.image_url")
    product_id =serializers.IntegerField(source="product.product_id")

    class Meta:
        models = models.Banner
        fields = "__all__"

 

热销产品的推荐

from rest_framework.views import APIView
from rest_framework.response import Response

from app01.my_ser import Goods_ser
from app01 import models


class HotGoods(APIView):
    def post(self,request):
        data = models.Product.objects.filter(disabled=True).order_by("-buy_count","-w_order")
        data = Goods_ser.Goods_ser(instance=data,many=True,context={"request":request}).data
        return Response({"code":200,"msg":"ok","data":data})

 

序列化

from  rest_framework import serializers
from app01 import  models
class Goods_ser(serializers.ModelSerializer):
    image_url=serializers.ImageField(source="image.image_url")

    class Meta:
        model=models.Product
        fields="__all__"

 

以上是关于小程序支付-再次签名-商城表的设计-热销产品展示的主要内容,如果未能解决你的问题,请参考以下文章

Java毕业设计+现成产品 —>java ssm springboot网上蛋糕商城项目12(完整源码+sql+论文)主要功能:登录注册商品浏览分类模糊查找轮播图热销商品购物车订单等

如何快速开发一套微信商城小程序?

商城拍卖活动设计方案

微信小程序怎么修改支付方式

微信小程序商城如何接入微信支付的功能?

Java毕业设计+现成产品 —>基于springboot+vue+redis前后端分离家具商城平台系统(源码+论文初稿可运行)15主要设计:用户登录注册商城分类商品浏览查看购物车订单支付