models.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. CONFIRM_PAY = 1
  49. WAIT_DISPATCH = 2
  50. CONFIRM_DISPATCH = 3
  51. FINISH = 4
  52. CANCEL = 5
  53. STATUS_CHOICES = (
  54. (WAIT_PAY, u'待付款'),
  55. (CONFIRM_PAY, u'已付款'),
  56. (WAIT_DISPATCH, u'待发货'),
  57. (CONFIRM_DISPATCH, u'已发货'),
  58. (FINISH, u'已完成'),
  59. (CANCEL, u'已取消'),
  60. )
  61. no = models.CharField(max_length=50, verbose_name=u'订单号', blank=True)
  62. pay = models.ForeignKey(Pay, verbose_name=u'支付信息', on_delete=models.PROTECT, null=True, editable=False)
  63. total_count = models.IntegerField(verbose_name=u'总数量', default=0, editable=False)
  64. total_amount = models.BigIntegerField(verbose_name=u'总金额', default=0, editable=False)
  65. total_point = models.BigIntegerField(verbose_name=u'总积分', default=0, editable=False)
  66. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"订单状态", default=WAIT_PAY)
  67. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  68. customer = models.ForeignKey(Customer, verbose_name=u'创建人', editable=False, on_delete=models.PROTECT)
  69. create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now, editable=False)
  70. cancel = models.BooleanField(verbose_name=u"取消", default=False)
  71. cancel_reason = models.CharField(max_length=100, verbose_name=u"取消原因", null=True, blank=True)
  72. cancel_user =models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_cancel_user', verbose_name=u"取消人", on_delete=models.PROTECT, null=True, blank=True)
  73. cancel_time = models.DateTimeField(verbose_name=u"取消时间", null=True, blank=True)
  74. address = models.ForeignKey(CustomerAddress, verbose_name=u'收货地址', related_name='order_address', null=True, on_delete=models.PROTECT)
  75. name = models.CharField(verbose_name=u'姓名', max_length=20, null=True)
  76. tel = models.CharField(verbose_name=u'手机', max_length=15, null=True)
  77. user_address = models.CharField(verbose_name=u'详细地址', max_length=200, null=True)
  78. express_no = models.CharField(max_length=50, verbose_name=u'快递单号', blank=True)
  79. express_company = models.ForeignKey(Option, verbose_name=u'快递公司', on_delete=models.PROTECT)
  80. dispatch_time = models.DateField(verbose_name=u'发货时间', null=True)
  81. class Meta:
  82. db_table = "order"
  83. verbose_name = u"客户订单"
  84. ordering = ('-id',)
  85. default_permissions = ()
  86. permissions = []
  87. class OrderDetails(models.Model):
  88. order = models.ForeignKey(Order, verbose_name=u'订单', on_delete=models.PROTECT)
  89. commodity = models.ForeignKey(Commodity, verbose_name=u'商品', on_delete=models.PROTECT)
  90. price = models.IntegerField(verbose_name=u'价格', null=True, default=0)
  91. point = models.IntegerField(verbose_name=u'积分', null=True, default=0)
  92. count = models.IntegerField(verbose_name=u'数量', null=True, default=0)
  93. amount = models.BigIntegerField(verbose_name=u'总金额', null=True, default=0)
  94. point_amount = models.BigIntegerField(verbose_name=u'总积分', null=True, default=0)
  95. class Meta:
  96. db_table = u'order_details'
  97. verbose_name = u'订单明细'
  98. ordering = ('-id', )
  99. default_permissions = ()
  100. permissions = []