models.py 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. # coding=utf-8
  2. from django.db import models
  3. from django.conf import settings
  4. from utils.exceptions import CustomError
  5. from apps.log.models import BizLog
  6. from django.contrib.auth import get_user_model
  7. User = get_user_model()
  8. from apps.upload.models import Upload
  9. from apps import order
  10. class Product(models.Model):
  11. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='package_create_user', verbose_name=u"添加人",
  12. on_delete=models.PROTECT, editable=False)
  13. create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
  14. month = models.IntegerField(verbose_name=u'贷款期限')
  15. name = models.CharField(verbose_name=u'产品名称', max_length=200)
  16. enable = models.BooleanField(verbose_name=u'是否在用', default=True,)
  17. main_image = models.ForeignKey(Upload, verbose_name=u'主图', on_delete=models.SET_NULL, null=True,
  18. related_name='main_image')
  19. class Meta:
  20. db_table = "product"
  21. verbose_name = u"贷款产品"
  22. ordering = ('-id',)
  23. default_permissions = ()
  24. permissions = [
  25. ]
  26. class ProductImages(models.Model):
  27. name = models.CharField(verbose_name=u'名称', max_length=200)
  28. product = models.ForeignKey(Product, verbose_name=u'产品', on_delete=models.PROTECT, related_name='product_images')
  29. image = models.ForeignKey(Upload, verbose_name=u'图片', on_delete=models.PROTECT)
  30. class Meta:
  31. db_table = "product_images"
  32. verbose_name = u"产品图片"
  33. ordering = ('id',)
  34. default_permissions = ()
  35. class Order(models.Model):
  36. category = models.PositiveSmallIntegerField(choices=order.CATEGORY_CHOICES, verbose_name=u"订单类型", default=order.ZERO)
  37. status = models.PositiveSmallIntegerField(choices=order.STATUS_CHOICES, verbose_name=u"订单状态", default=order.ZERO)
  38. seller = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_seller', verbose_name=u"业务人员",
  39. on_delete=models.PROTECT, editable=False)
  40. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_create_user', verbose_name=u"添加人",
  41. on_delete=models.PROTECT, editable=False)
  42. create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
  43. cancel_reason = models.CharField(max_length=100, verbose_name=u"未通过原因", null=True)
  44. vmodel = models.CharField(max_length=100, verbose_name=u"车型", null=True)
  45. invioce = models.CharField(max_length=10, verbose_name=u"车辆发票金额", null=True)
  46. ptax = models.CharField(max_length=10, verbose_name=u"购置税", null=True)
  47. insurance = models.CharField(max_length=10, verbose_name=u"保险", null=True)
  48. boutique = models.CharField(max_length=10, verbose_name=u"精品", null=True)
  49. wextension = models.CharField(max_length=10, verbose_name=u"延保", null=True)
  50. upkeep = models.CharField(max_length=10, verbose_name=u"保养", null=True)
  51. dpratio = models.CharField(max_length=10, verbose_name=u"首付比例", null=True)
  52. lamount = models.CharField(max_length=10, verbose_name=u"申请贷款金额", null=True)
  53. package = models.ForeignKey(Product, verbose_name=u'贷款产品', on_delete=models.PROTECT, null=True)
  54. name = models.CharField(max_length=10, verbose_name=u"姓名", null=True)
  55. sex = models.PositiveSmallIntegerField(choices=order.STATUS_CHOICES, verbose_name=u"性别", default=order.ZERO)
  56. bdate = models.DateField(verbose_name=u"出生日期", null=True)
  57. rpr = models.PositiveSmallIntegerField(choices=order.HUKOU_CHOICES, verbose_name=u"户口", default=order.ZERO)
  58. nationality = models.PositiveSmallIntegerField(choices=order.NATIONALITY_CHOICES, verbose_name=u"国籍/地区", default=order.ZERO)
  59. ntype = models.PositiveSmallIntegerField(choices=order.ITYPE_CHOICES, verbose_name=u"身份证件类型", default=order.ZERO)
  60. inumber = models.CharField(max_length=18, verbose_name=u"身份证件号码", null=True)
  61. mstatus = models.PositiveSmallIntegerField(choices=order.HUNYIN_CHOICES, verbose_name=u"婚姻状况", default=order.ZERO)
  62. elevel = models.PositiveSmallIntegerField(choices=order.JIAOYU_CHOICES, verbose_name=u"教育程度", default=order.ZERO)
  63. naddress = models.CharField(max_length=100, verbose_name=u"现居住地址", null=True)
  64. hptype = models.PositiveSmallIntegerField(choices=order.FAGNCHAN_CHOICES, verbose_name=u"现居住房产类型", default=order.ZERO)
  65. maddress = models.PositiveSmallIntegerField(choices=order.YOUJI_CHOICES, verbose_name=u"邮寄地址", default=order.ZERO)
  66. email = models.CharField(max_length=100, verbose_name=u"电子邮箱", null=True)
  67. wx = models.CharField(max_length=100, verbose_name=u"微信号", null=True)
  68. phone = models.CharField(max_length=15, verbose_name=u"住宅固定电话", null=True)
  69. tel = models.CharField(max_length=11, verbose_name=u"手机号", null=True)
  70. wname = models.CharField(max_length=100, verbose_name=u"现工作单位名称", null=True)
  71. wphone = models.CharField(max_length=15, verbose_name=u"单位电话", null=True)
  72. waddress = models.CharField(max_length=100, verbose_name=u"现工作单位地址", null=True)
  73. itype = models.PositiveSmallIntegerField(choices=order.HANGYE_CHOICES, verbose_name=u"行业类型", default=order.ZERO)
  74. otype = models.PositiveSmallIntegerField(choices=order.ZHIYE_CHOICES, verbose_name=u"职业类型", default=order.ZERO)
  75. position = models.CharField(max_length=20, verbose_name=u"职位", null=True)
  76. wbst = models.BooleanField(verbose_name=u"是否挂靠", default=False)
  77. bstname = models.CharField(max_length=100, verbose_name=u"挂靠公司名称", null=True)
  78. bstcode = models.CharField(max_length=100, verbose_name=u"挂靠公司组织机构代码", null=True)
  79. bsttel = models.CharField(max_length=100, verbose_name=u"挂靠公司电话", null=True)
  80. bstaddress = models.CharField(max_length=100, verbose_name=u"挂靠公司地址", null=True)
  81. cname = models.CharField(max_length=10, verbose_name=u"联系人1名称", null=True)
  82. ctel = models.CharField(max_length=11, verbose_name=u"联系人1手机号", null=True)
  83. relation = models.PositiveSmallIntegerField(choices=order.GUANXI_CHOICES, verbose_name=u"与借款人关系", default=order.ZERO)
  84. caddress = models.CharField(max_length=100, verbose_name=u"现居住地址", null=True)
  85. ctname = models.CharField(max_length=10, verbose_name=u"联系人2姓名", null=True)
  86. cttel = models.CharField(max_length=11, verbose_name=u"联系人2手机号", null=True)
  87. thesame = models.BooleanField(verbose_name=u"是否有共同借款人", default=False)
  88. tsname = models.CharField(max_length=10, verbose_name=u"共借人姓名", null=True)
  89. tsbdate = models.DateField(verbose_name=u"出生日期", null=True)
  90. tsitype = models.PositiveSmallIntegerField(choices=order.ITYPE_CHOICES, verbose_name=u"身份证件类型", default=order.ZERO)
  91. tsinumber = models.CharField(max_length=18, verbose_name=u"身份证件号码", null=True)
  92. tstel = models.CharField(max_length=11, verbose_name=u"手机号", null=True)
  93. tsrelation = models.PositiveSmallIntegerField(choices=order.GUANXI_CHOICES, verbose_name=u"与借款人关系",
  94. default=order.ZERO)
  95. tsnaddress = models.CharField(max_length=100, verbose_name=u"现居住地址", null=True)
  96. tsmaddress = models.PositiveSmallIntegerField(choices=order.YOUJI_CHOICES, verbose_name=u"邮寄地址", default=order.ZERO)
  97. tsemail = models.CharField(max_length=50, verbose_name=u"电子邮箱", null=True)
  98. tswx = models.CharField(max_length=20, verbose_name=u"微信号", null=True)
  99. tswname = models.CharField(max_length=100, verbose_name=u"现工作单位名称", null=True)
  100. tswphone = models.CharField(max_length=15, verbose_name=u"单位电话", null=True)
  101. tswaddress = models.CharField(max_length=100, verbose_name=u"现工作单位地址", null=True)
  102. tsmincome = models.CharField(max_length=10, verbose_name=u"税后月收入", null=True)
  103. class Meta:
  104. db_table = "order"
  105. verbose_name = u"订单管理"
  106. ordering = ('-id',)
  107. default_permissions = ()
  108. permissions = [
  109. ]
  110. @staticmethod
  111. def get_instance_by_id(id):
  112. try:
  113. id = int(id)
  114. except:
  115. raise CustomError('无效的订单ID')
  116. instance = Order.objects.filter(pk=id).first()
  117. if not instance:
  118. raise CustomError('未找到对应的订单')
  119. return instance