123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- # coding=utf-8
- from django.conf import settings
- import time
- import datetime
- import traceback
- from django.utils import timezone
- from rest_framework.views import APIView
- from utils.custom_modelviewset import CustomModelViewSet
- from utils.permission import IsAdministratorUser,IsTenantUser
- from apps.tenant.models import Tenant
- from apps.tenant.employee.models import Employee
- from apps.admin import admin_log
- from apps.log.models import BizLog
- from .serializers import TenantSerializer
- from django.db import transaction
- from utils import response_ok
- from utils.exceptions import CustomError
- from rest_framework.decorators import action
- from utils import response_ok, response_error
- from apps.account.models import User
- from .filters import TenantFilter
- from apps.tenant.option.models import Option
- from apps.tenant.notices.models import Notices, NoticesToUser
- from apps.WechatApplet.models import WechatApplet
- from apps.tenant.config.models import Config
- class TenantViewSet(CustomModelViewSet):
- permission_classes = [IsAdministratorUser, ]
- queryset = Tenant.objects.all()
- serializer_class = TenantSerializer
- def filter_queryset(self, queryset):
- f = TenantFilter(self.request.GET, queryset=queryset)
- return f.qs
- def perform_create(self, serializer):
- super(TenantViewSet, self).perform_create(serializer)
- instance = serializer.instance
- validated_data = serializer.validated_data
- admin_log(self.request.user, BizLog.INSERT, u'添加企业[%s] id=%d' % (instance.company_name, instance.id), validated_data)
- def perform_update(self, serializer):
- super(TenantViewSet, self).perform_update(serializer)
- instance = serializer.instance
- validated_data = serializer.validated_data
- admin_log(self.request.user, BizLog.INSERT, u'修改企业[%s] id=%d' % (instance.name, instance.id), validated_data)
- @action(methods=['post'], detail=True)
- def super_tenant(self, request, pk):
- name = request.POST.get('name')
- username = request.POST.get('username')
- password = request.POST.get('password')
- try:
- with transaction.atomic():
- tenant = Tenant.objects.filter(pk=pk).first()
- if not tenant:
- raise CustomError('当前企业无效,请刷新!')
- user = User.objects.filter(username=username).first()
- if user:
- user.type = User.SUPER
- user.save()
- Employee.objects.filter(user=user).update(tenant=tenant,name=name, type=Employee.SUPER)
- else:
- user = Employee.create_super_admin(tenant, name, username, password)
- option_data1 = {
- 'tenant': tenant,
- 'type': 1,
- 'name': u'桌椅、板凳',
- 'create_user': user,
- }
- option_data2 = {
- 'tenant': tenant,
- 'type': 2,
- 'name': u'设备老化',
- 'create_user': user,
- }
- Option.objects.create(**option_data1)
- Option.objects.create(**option_data2)
- notice_data = {
- 'title':'企业入驻审核通知,请点击查看!',
- 'content':'''您的企业入驻审核已通过,请牢记一下内容:
- 企业名称:{0}<br>
- 企业编号:{1}<br>
- 超级管理员账号:{2}<br>
- 超级管理员密码:{3}<br>
- 电脑端管理系统网址:https://baoxiu.zzliaoyuan.com/
- '''.format(tenant.company_name,tenant.company_no,username,password),
- 'create_user':request.user,
- 'tenant':tenant,
- 'type':Notices.MESSAGE,
- 'range':Notices.ADMIN,
- 'end_time':(timezone.now() + datetime.timedelta(days=10)).strftime('%Y-%m-%d'),
- }
- notice = Notices.objects.create(**notice_data)
- NoticesToUser.objects.create(notice=notice,user=user)
- admin_log(request.user, BizLog.INSERT, u'企业[%s]添加超级账号[%s]' % (tenant.company_name,username))
- return response_ok()
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
- @action(methods=['post'], detail=True)
- def check(self, request, pk):
- # 审核
- status = request.POST.get('status')
- reject_reason = request.POST.get('reason')
- try:
- with transaction.atomic():
- instance = Tenant.getById(pk)
- # 审核
- if instance.status > settings.DEFAULT:
- raise CustomError('当前企业已审核!')
- instance.status = status
- instance.reject_reason = reject_reason
- if int(status) == settings.PASS:
- days = Config.getIntValue(Config.FREE_DAYS)
- instance.end_date = (datetime.datetime.now() + datetime.timedelta(days=int(days))).strftime('%Y-%m-%d')
- instance.save()
- if not instance.wxapp_img:
- applet = WechatApplet.objects.filter(authorizer_appid=settings.WEAPP['appid']).first()
- filename = applet.getWXAppCode(instance.company_no)
- instance.wxapp_img = "{0}{1}".format(settings.MEDIA_URL, filename)
- instance.save()
- BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'审核企业[%s]状态为[%s],id=%d' % (instance.company_name, status, instance.id))
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
- return response_ok('审核完成!')
- class MemberRemindViewSet(APIView):
- permission_classes = [IsTenantUser, ]
- def get(self, request):
- tenant = request.user.employee.tenant
- today = datetime.datetime.now().strftime('%Y-%m-%d')
- today_stamp = time.mktime(time.strptime(today, "%Y-%m-%d"))
- end_date = time.mktime(time.strptime(tenant.end_date.strftime('%Y-%m-%d'), '%Y-%m-%d'))
- diff = (int(end_date) - int(today_stamp))/86400
- notice = Notices.objects.filter(type=Notices.RENEW, end_time__isnull=True,tenant=tenant)
- if not notice and diff <= 30:
- employee = Employee.objects.filter(tenant=tenant,type=Employee.SUPER).first()
- user = employee.user
- notice_data = {
- 'title': '会员到期提醒,请点击查看!',
- 'content': '您的会员还有{0}天到期!请及时续费,以免影响您的正常使用!'.format(diff),
- 'tenant': tenant,
- 'create_user': request.user,
- 'type': Notices.RENEW,
- 'range': Notices.ADMIN,
- # 'end_time': (timezone.now() + datetime.timedelta(days=int(diff))).strftime('%Y-%m-%d'),
- }
- notice = Notices.objects.create(**notice_data)
- NoticesToUser.objects.create(notice=notice, user=user)
- return response_ok()
|