123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- #coding=utf-8
- import datetime
- from django.db import models
- from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, Group, PermissionsMixin
- from django.utils import timezone
- from django.conf import settings
- from apps.exceptions import CustomError
- from apps.foundation.consts import CONTENT_TYPE_SORTING, MENU_TO_MODEL
- from apps.foundation.models import BizLog
- class Branch(models.Model):
- name = models.CharField(max_length=200, verbose_name=u"名称")
- tel = models.CharField(max_length=50, verbose_name=u"电话")
- address = models.CharField(max_length=200, verbose_name=u"地址")
- enabled = models.BooleanField(verbose_name=u"在用", default=True)
- create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
- @staticmethod
- def getById(id):
- try:
- id = int(id)
- except:
- raise CustomError(u'无效的门店')
- instance = Branch.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的门店')
- return instance
- class Meta:
- db_table = "branch"
- ordering = ['-id']
- verbose_name = u"门店管理"
- class Member(models.Model):
- branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT, null=True, blank=True)
- nickname = models.CharField(max_length=200, verbose_name=u"名称")
- tel = models.CharField(max_length=50, verbose_name=u"电话")
- create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
- class Meta:
- db_table = "member"
- ordering = ['-id']
- verbose_name = u"会员管理"
- class Activity(models.Model):
- branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT)
- title = models.CharField(max_length=200, verbose_name=u"标题")
- describe = models.TextField(verbose_name=u'活动介绍')
- end_date = models.DateField(verbose_name=u"截止日期")
- amount = models.FloatField(verbose_name=u"费用", default=0)
- rebate = models.FloatField(verbose_name=u"返利", default=0)
- check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核", editable=False, default=settings.DEFAULT)
- branch_name = models.CharField(max_length=200, verbose_name=u"门店名称", null=True, blank=True)
- branch_tel = models.CharField(max_length=50, verbose_name=u"门店电话", null=True, blank=True)
- branch_address = models.CharField(max_length=200, verbose_name=u"门店地址", null=True, blank=True)
- create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
- enabled = models.BooleanField(verbose_name=u"在用", default=True)
- delete = models.BooleanField(verbose_name=u"删除", default=False)
- class Meta:
- db_table = "activity"
- ordering = ['-id']
- verbose_name = u"活动管理"
- class Order(models.Model):
- DEFAULT = 0
- FINISH = 1
- FAIL = 2
- STATUS_CHOICES = (
- (DEFAULT, u'待付款'),
- (FINISH, u'已完成'),
- (FAIL, u'失败'),
- )
- branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT)
- activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
- member = models.ForeignKey(Member, verbose_name=u"会员", on_delete=models.PROTECT)
- amount = models.FloatField(verbose_name=u"费用", default=0)
- status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"状态", default=DEFAULT, editable=False)
- model = models.CharField(max_length=200, verbose_name=u"车型", null=True, blank=True)
- tel = models.CharField(max_length=100, verbose_name=u"电话", null=True, blank=True)
- number = models.CharField(max_length=50, verbose_name=u"车牌号", null=True, blank=True)
- create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
- delete = models.BooleanField(verbose_name=u"删除", default=False)
- class Meta:
- db_table = "order"
- ordering = ['-id']
- verbose_name = u"订单管理"
- class Coupon(models.Model):
- FIXED_DATE = 0
- RECEIVE_TIMING = 1
- OFF_TYPE_CHOICES = (
- (FIXED_DATE, u'固定日期'),
- (RECEIVE_TIMING, u'领取计时'),
- )
- branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT)
- name = models.CharField(max_length=200, verbose_name=u"名称")
- off_type = models.PositiveSmallIntegerField(choices=OFF_TYPE_CHOICES, verbose_name=u"核销方式", default=FIXED_DATE)
- end_date = models.DateField(verbose_name=u"截止日期", null=True, blank=True)
- end_days = models.IntegerField(verbose_name=u"截止天数", null=True, blank=True)
- create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
- enabled = models.BooleanField(verbose_name=u"在用", default=True)
- class Meta:
- db_table = "coupon"
- ordering = ['-id']
- verbose_name = u"优惠券"
- class MemberCoupon(models.Model):
- member = models.ForeignKey(Member, verbose_name=u"会员", on_delete=models.PROTECT)
- coupon = models.ForeignKey(Coupon, verbose_name=u"优惠券", on_delete=models.PROTECT)
- activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
- receive_date = models.DateField(verbose_name=u"领取日期", null=True, blank=True)
- end_date = models.DateField(verbose_name=u"有效期至", null=True, blank=True)
- write_off = models.BooleanField(verbose_name=u"核销", default=True)
- write_off_time = models.DateTimeField(verbose_name=u"核销时间", editable=False, null=True, blank=True)
- class Meta:
- db_table = "member_coupon"
- ordering = ['-id']
- verbose_name = u"会员优惠券"
- def writeOff(self):
- now = datetime.datetime.date(timezone.now())
- if self.write_off:
- raise CustomError(u'该优惠券已核销,禁止重复使用!')
- if self.end_date and now > self.end_date:
- raise CustomError(u'该优惠券已过有效期,禁止使用!')
- self.write_off = True
- self.write_off_time = timezone.now()
- self.save()
- def cancelWriteOff(self):
- if not self.write_off:
- raise CustomError(u'该优惠券尚未核销,禁止撤销!')
- self.write_off = False
- self.write_off_time = None
- self.save()
- @staticmethod
- def getById(id):
- try:
- id = int(id)
- except:
- raise CustomError(u'无效的会员优惠券ID')
- instance = MemberCoupon.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的会员优惠券')
- return instance
- class ActivityCoupon(models.Model):
- activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
- coupon = models.ForeignKey(Coupon, verbose_name=u"优惠券", on_delete=models.PROTECT)
- class Meta:
- db_table = "activity_coupon"
- ordering = ['-id']
- verbose_name = u"活动优惠券"
|