models.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # coding=utf-8
  2. from django.db import models
  3. from django.utils import timezone
  4. from django.conf import settings
  5. class Customer(models.Model):
  6. user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'用户', editable=False, related_name='customer_user', on_delete=models.PROTECT)
  7. is_distributor = models.BooleanField(verbose_name=u"分销商", default=False)
  8. name = models.CharField(max_length=100, verbose_name=u"姓名")
  9. tel = models.CharField(max_length=50, verbose_name=u'电话')
  10. gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别', null=True)
  11. face = models.CharField(max_length=200, verbose_name=u'头像', null=True)
  12. balance = models.BigIntegerField(verbose_name=u'余额', default=0, editable=False)
  13. points = models.IntegerField(verbose_name=u'积分', default=0, editable=False)
  14. success_count = models.IntegerField(verbose_name=u'成交次数', default=0, editable=False)
  15. total_amount = models.BigIntegerField(verbose_name=u'累计消费金额', default=0, editable=False)
  16. total_point = models.BigIntegerField(verbose_name=u'累计消费积分', default=0, editable=False)
  17. class Meta:
  18. db_table = "customer"
  19. verbose_name = u'客户管理'
  20. ordering = ['-id']
  21. index_together = (
  22. 'name',
  23. 'tel',
  24. )
  25. default_permissions = ()
  26. permissions = []
  27. class SuperiorDistributor(models.Model):
  28. customer = models.ForeignKey(Customer, verbose_name=u'客户', editable=False, related_name='superior_distributor_customer', on_delete=models.PROTECT)
  29. one_level = models.ForeignKey(Customer, verbose_name=u'一级分销', related_name='superior_distributor_one_level', on_delete=models.PROTECT, null=True, blank=True)
  30. tow_level = models.ForeignKey(Customer, verbose_name=u'二级分销', related_name='superior_distributor_tow_level', on_delete=models.PROTECT, null=True, blank=True)
  31. three_level = models.ForeignKey(Customer, verbose_name=u'三级分销', related_name='superior_distributor_three_level', on_delete=models.PROTECT, null=True, blank=True)
  32. four_level = models.ForeignKey(Customer, verbose_name=u'四级分销', related_name='superior_distributor_four_level', on_delete=models.PROTECT, null=True, blank=True)
  33. five_level = models.ForeignKey(Customer, verbose_name=u'五级分销', related_name='superior_distributor_five_level', on_delete=models.PROTECT, null=True, blank=True)
  34. class Meta:
  35. db_table = "superior_distributor"
  36. verbose_name = u'上级分销'
  37. ordering = ['-id']
  38. default_permissions = ()
  39. permissions = []
  40. class CustomerWechat(models.Model):
  41. customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT, editable=False, null=True)
  42. openid = models.CharField(max_length=512, verbose_name=u"openid")
  43. session_key = models.CharField(max_length=512, verbose_name=u'session_key',null=True)
  44. class Meta:
  45. db_table = "customer_wechat"
  46. verbose_name = u'微信客户'
  47. unique_together = [
  48. ('openid')
  49. ]
  50. default_permissions = ()
  51. class Area(models.Model):
  52. PROVINCE = 0
  53. CITY = 1
  54. COUNTY = 2
  55. LEVEL_CHOICES = (
  56. (PROVINCE, u'省级'),
  57. (CITY, u'市级'),
  58. (COUNTY, u'县区级'),
  59. )
  60. name = models.CharField(verbose_name=u'名称', max_length=50, blank=True, null=True)
  61. level = models.IntegerField(verbose_name=u'层级', choices=LEVEL_CHOICES)
  62. province_name = models.CharField(u'所属省', max_length=50, blank=True, null=True)
  63. city_name = models.CharField(u'所属地市', max_length=50, blank=True, null=True)
  64. province = models.ForeignKey('Area', verbose_name=u'所属省', related_name='province_children', on_delete=models.PROTECT, blank=True, null=True)
  65. city = models.ForeignKey('Area', verbose_name=u'所属地市', related_name='city_children', on_delete=models.PROTECT, blank=True, null=True)
  66. def __unicode__(self):
  67. return '%s' % (self.name)
  68. class Meta:
  69. verbose_name = u"地区"
  70. db_table = "area"
  71. class CustomerAddress(models.Model):
  72. customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT, editable=False)
  73. name = models.CharField(verbose_name=u'收货人姓名', max_length=20)
  74. tel = models.CharField(verbose_name=u'收货人电话', max_length=11)
  75. province = models.ForeignKey(Area, verbose_name=u'省', related_name='address_province', on_delete=models.PROTECT)
  76. city = models.ForeignKey(Area, verbose_name=u'地市', related_name='address_city', null=True, on_delete=models.PROTECT)
  77. county = models.ForeignKey(Area, verbose_name=u'区县', related_name='address_county', null=True, on_delete=models.PROTECT)
  78. address = models.CharField(verbose_name=u'详细地址', max_length=500)
  79. default = models.BooleanField(verbose_name=u'默认', default=False)
  80. delete = models.BooleanField(verbose_name=u'删除', default=False, editable=False)
  81. create_time = models.DateTimeField(verbose_name=u'创建时间', default=timezone.now, editable=False)
  82. class Meta:
  83. db_table = 'customer_address'
  84. verbose_name = u'收货地址'
  85. ordering = ['-default', '-id']
  86. default_permissions = ()
  87. def get_address(self):
  88. return '{}{}{}{}'.format(self.province.name, self.city.name, self.county.name, self.address)
  89. def destory(self, queryset):
  90. if self.default:
  91. self.default = False
  92. default = queryset.first()
  93. if default:
  94. default.default = True
  95. default.save()
  96. self.delete = True
  97. self.save()