123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- # coding=utf-8
- from django.db import models
- from django.conf import settings
- from apps.account.models import User
- from apps.tenant.models import Tenant
- from utils.exceptions import CustomError
- from django.db import transaction
- class Employee(models.Model):
- ENABLE = 1
- WORKING = 2
- DAY_OFF = 3
- DISABLE = 4
- STATUS_CHOICES = (
- (ENABLE, u'在用'),
- (WORKING, u'工作中'),
- (DAY_OFF, u'调休'),
- (DISABLE, u'禁用'),
- )
- SUPER = 1
- ADMIN = 2
- EMPLOYEE = 3
- REPAIR = 4
- TYPE_CHOICES = (
- (SUPER, u'平台管理员'),
- (ADMIN, u'管理者'),
- (EMPLOYEE, u'检修人'),
- (REPAIR, u'报修人'),
- )
- name = models.CharField(max_length=100, verbose_name=u"姓名")
- tel = models.CharField(max_length=50, verbose_name=u'电话')
- gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别', default=settings.MALE)
- status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'状态',default=ENABLE)
- user = models.OneToOneField(settings.AUTH_USER_MODEL, editable=False, related_name='employee',
- on_delete=models.PROTECT, verbose_name=u'添加人', null=True)
- position = models.CharField(max_length=20, verbose_name=u'职位', null=True)
- create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
- editable=False, related_name='create_user',null=True)
- face = models.CharField(max_length=200, verbose_name=u'头像', null=True)
- baoxiu_count = models.IntegerField(verbose_name='报修次数', default=0)
- tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT,null=True)
- type = models.PositiveSmallIntegerField(verbose_name=u'人员类型', choices=TYPE_CHOICES, default=REPAIR)
- class Meta:
- db_table = "employee"
- verbose_name = u"用户管理"
- ordering = ['-id']
- index_together = (
- 'name',
- 'tel',
- )
- default_permissions = ()
- @staticmethod
- def create_super_admin(tenant,name, username, password):
- # 企业添加管理超级管理员
- user = User.objects.create_superuser_tenant(username, password)
- Employee.objects.create(
- name=name,
- tel=username,
- gender=settings.MALE,
- user=user,
- tenant=tenant,
- type=Employee.SUPER,
- )
- return user
- @staticmethod
- def get_instance_by_id(id, tenant):
- try:
- id = int(id)
- except:
- raise CustomError('无效的employee_id')
- instance = Employee.objects.filter(pk=id, tenant=tenant).first()
- if not instance:
- raise CustomError('未找到对应的员工实例')
- return instance
- @staticmethod
- def getOrRegister(user):
- # 小程序登录后,自动注册报修人
- customer = Employee.objects.filter(user=user).first()
- if customer:
- return customer
- with transaction.atomic():
- customer = Employee.objects.create(user=user,type=Employee.REPAIR, tel=user.username, name=user.username)
- return customer
- @staticmethod
- def checkSuper(tenant, id=None):
- # 检查超级管理员数量
- rows = Employee.objects.filter(type=Employee.SUPER, tenant=tenant)
- if id:
- rows = rows.exclude(id=id)
- return rows.count()
- @staticmethod
- def checkEmployee(tenant, id=None):
- # 检查超级管理员数量
- rows = Employee.objects.filter(type=Employee.EMPLOYEE, tenant=tenant)
- if id:
- rows = rows.exclude(id=id)
- return rows.count()
|