models.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # coding=utf-8
  2. from django.db import models
  3. from django.conf import settings
  4. from django.utils import timezone
  5. from apps.option.models import Option
  6. from apps.commodity.models import Commodity
  7. from apps.customer.models import Customer, CustomerAddress
  8. class Pay(models.Model):
  9. WAIT = 1
  10. PAY = 2
  11. UNDO = 3
  12. STATUS_CHOICES = (
  13. (WAIT, u'待付款'),
  14. (PAY, u'已付款'),
  15. (UNDO, u'已取消'),
  16. )
  17. no = models.CharField(max_length=64, verbose_name=u"单号")
  18. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'状态', default=WAIT)
  19. precreate_amount = models.BigIntegerField(verbose_name=u"预支付金额")
  20. amount = models.BigIntegerField(verbose_name=u"支付金额", null=True)
  21. transaction_id = models.CharField(max_length=100, verbose_name=u"微信支付订单号", null=True)
  22. customer = models.ForeignKey(Customer, verbose_name=u'下单人', related_name='pay_customer', on_delete=models.PROTECT)
  23. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
  24. class Meta:
  25. db_table = "pay"
  26. verbose_name = u"支付信息"
  27. ordering = ('-id',)
  28. index_together = (
  29. 'create_time',
  30. 'status',
  31. )
  32. unique_together = (
  33. 'no',
  34. )
  35. default_permissions = ()
  36. class ShoppingCart(models.Model):
  37. commodity_details = models.ForeignKey(Commodity, verbose_name=u'产品明细', on_delete=models.PROTECT)
  38. quantity = models.PositiveIntegerField(verbose_name=u'数量', default=1)
  39. create_time = models.DateTimeField(verbose_name=u'创建时间', auto_now_add=True)
  40. customer = models.ForeignKey(Customer, related_name='shopping_cart_customer', verbose_name=u"下单人", on_delete=models.PROTECT, editable=False)
  41. class Meta:
  42. db_table = 'shopping_cart'
  43. verbose_name = u'购物车'
  44. ordering = ['-id', ]
  45. default_permissions = ()
  46. class Order(models.Model):
  47. WAIT_PAY = 0
  48. WAIT_DISPATCH = 1
  49. WAIT_EVALUATE = 2
  50. EVALUATED = 3
  51. CANCEL = 4
  52. STATUS_CHOICES = (
  53. (WAIT_PAY, u'待付款'),
  54. (WAIT_DISPATCH, u'待发货'),
  55. (WAIT_EVALUATE, u'待评价'),
  56. (EVALUATED, u'已评价'),
  57. (CANCEL, u'已取消'),
  58. )
  59. no = models.CharField(max_length=50, verbose_name=u'订单号', editable=False)
  60. pay = models.ForeignKey(Pay, verbose_name=u'支付信息', on_delete=models.PROTECT, null=True, editable=False)
  61. total_count = models.IntegerField(verbose_name=u'总数量', default=0, editable=False)
  62. total_amount = models.BigIntegerField(verbose_name=u'总金额', default=0, editable=False)
  63. total_point = models.IntegerField(verbose_name=u'总积分', default=0, editable=False)
  64. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"订单状态", default=WAIT_PAY)
  65. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True, blank=True)
  66. customer = models.ForeignKey(Customer, verbose_name=u'创建人', editable=False, on_delete=models.PROTECT)
  67. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now, editable=False)
  68. cancel_reason = models.CharField(max_length=100, verbose_name=u"取消原因", null=True, blank=True)
  69. cancel_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_cancel_user', verbose_name=u"取消人", on_delete=models.PROTECT, null=True, blank=True)
  70. cancel_time = models.DateTimeField(verbose_name=u"取消时间", null=True, blank=True)
  71. address = models.ForeignKey(CustomerAddress, verbose_name=u'收货地址', related_name='order_address', null=True, blank=True, on_delete=models.PROTECT)
  72. name = models.CharField(verbose_name=u'收货人', max_length=20, null=True, blank=True)
  73. tel = models.CharField(verbose_name=u'收货电话', max_length=15, null=True, blank=True)
  74. user_address = models.CharField(verbose_name=u'详细地址', max_length=200, null=True, blank=True)
  75. express_no = models.CharField(max_length=50, verbose_name=u'快递单号', null=True, blank=True)
  76. express_company = models.ForeignKey(Option, verbose_name=u'快递公司', on_delete=models.PROTECT, null=True, blank=True)
  77. dispatch_time = models.DateTimeField(verbose_name=u'发货时间', null=True, blank=True)
  78. dispatch_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_dispatch_user', verbose_name=u"发货人", on_delete=models.PROTECT, null=True, blank=True)
  79. class Meta:
  80. db_table = "order"
  81. verbose_name = u"客户订单"
  82. ordering = ('-id',)
  83. default_permissions = ()
  84. permissions = []
  85. class OrderDetails(models.Model):
  86. order = models.ForeignKey(Order, verbose_name=u'订单', on_delete=models.PROTECT)
  87. commodity = models.ForeignKey(Commodity, verbose_name=u'商品', on_delete=models.PROTECT)
  88. price = models.BigIntegerField(verbose_name=u'价格', null=True, default=0)
  89. point = models.IntegerField(verbose_name=u'积分', null=True, default=0)
  90. count = models.IntegerField(verbose_name=u'数量', null=True, default=0)
  91. amount = models.BigIntegerField(verbose_name=u'总金额', null=True, default=0)
  92. point_amount = models.IntegerField(verbose_name=u'总积分', null=True, default=0)
  93. class Meta:
  94. db_table = u'order_details'
  95. verbose_name = u'订单明细'
  96. ordering = ('-id', )
  97. default_permissions = ()
  98. permissions = []