views.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # coding=utf-8
  2. from django.conf import settings
  3. from django.db import transaction
  4. from rest_framework.views import APIView
  5. from rest_framework.decorators import action
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from apps.log.models import BizLog
  8. from apps.tenant.models import Tenant
  9. from .serializers import TenantSerializer
  10. from utils.exceptions import CustomError
  11. from utils import response_ok, response_error
  12. from apps.tenant.employee.models import Employee
  13. from utils.permission import isLogin
  14. class SearchTenantView(APIView):
  15. permission_classes = [isLogin, ]
  16. def get(self, request, *args, **kwargs):
  17. company_no = request.GET.get('company_no')
  18. tenant = Tenant.objects.filter(company_no=company_no, status=settings.PASS).first()
  19. if tenant and tenant != request.user.employee.tenant:
  20. data = {
  21. 'company_no':tenant.company_no,
  22. 'company_name':tenant.company_name,
  23. }
  24. return response_ok(data)
  25. else:
  26. return response_ok()
  27. class GetTenantView(APIView):
  28. permission_classes = [isLogin]
  29. def get(self, request, *args, **kwargs):
  30. emplayee = Employee.objects.filter(user=request.user).first()
  31. if emplayee:
  32. data = {
  33. 'tenant_id':emplayee.tenant.id,
  34. 'company_no':emplayee.tenant.company_no,
  35. 'company_name':emplayee.tenant.company_name,
  36. 'position':emplayee.position,
  37. 'wxapp_img':emplayee.tenant.wxapp_img,
  38. 'user_type_text':emplayee.get_type_display(),
  39. }
  40. return response_ok(data)
  41. else:
  42. return response_ok()
  43. class TenantViewSet(CustomModelViewSet):
  44. permission_classes = [isLogin, ]
  45. queryset = Tenant.objects.all()
  46. serializer_class = TenantSerializer
  47. def perform_create(self, serializer):
  48. super(TenantViewSet, self).perform_create(serializer)
  49. instance = serializer.instance
  50. validated_data = serializer.validated_data
  51. BizLog.objects.addnew(instance, self.request.user, BizLog.INSERT, u'申请企业[%s] id=%d' % (instance.company_name, instance.id), validated_data)
  52. @action(methods=['get'], detail=True)
  53. def bind_company(self, request, pk):
  54. # 绑定企业,pk 企业编号
  55. try:
  56. is_validity = Tenant.check_validity(pk)
  57. if not is_validity:
  58. raise CustomError('该企业认证已过期,请联系管理员续费!')
  59. user = self.request.user
  60. if user.type == Employee.SUPER:
  61. raise CustomError('您是企业超级管理员,不能绑定其他企业!')
  62. with transaction.atomic():
  63. user = self.request.user
  64. user.type = Employee.REPAIR
  65. user.save()
  66. tenant = Tenant.getByNo(pk)
  67. Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.REPAIR,position='报修人')
  68. except CustomError as e:
  69. return response_error(e.get_error_msg())
  70. except Exception as e:
  71. return response_error(str(e))
  72. return response_ok('绑定成功!')