Эх сурвалжийг харах

Merge branch 'master' of http://git.zzliaoyuan.com:4000/wushaodong/ly_baoxiu_admin

lijiangwei 4 жил өмнө
parent
commit
f11b7183e5

+ 1 - 0
apps/admin/tenant/serializers.py

@@ -10,6 +10,7 @@ from apps.upload.models import Upload
 class TenantSerializer(serializers.ModelSerializer) :
     create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
     status_text = serializers.CharField(source='get_status_display', read_only=True)
+    edition_text = serializers.CharField(source='get_edition_display', read_only=True)
     user_text = serializers.CharField(source='user.username', read_only=True)
     username = serializers.SerializerMethodField()
     image = serializers.SerializerMethodField()

+ 2 - 0
apps/admin/tenant/urls.py

@@ -2,8 +2,10 @@
 
 from rest_framework.routers import SimpleRouter
 from .views import *
+from django.conf.urls import url
 
 urlpatterns = [
+    url(r'member/$', MemberRemindViewSet.as_view()),
 ]
 
 router = SimpleRouter()

+ 34 - 2
apps/admin/tenant/views.py

@@ -1,11 +1,15 @@
 # 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
+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
@@ -23,6 +27,7 @@ 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()
@@ -116,7 +121,7 @@ class TenantViewSet(CustomModelViewSet):
                 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=days)).strftime('%Y-%m-%d')
+                    instance.end_date = (datetime.datetime.now() + datetime.timedelta(days=int(days))).strftime('%Y-%m-%d')
                     instance.save()
 
                 if not instance.wxapp_img:
@@ -131,3 +136,30 @@ class TenantViewSet(CustomModelViewSet):
         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,
+                '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()

+ 0 - 2
apps/tenant/config/models.py

@@ -5,8 +5,6 @@ from django.conf import settings
 
 config_file = 'config/'
 class Config(models.Model):
-    KEY_RENEW_YEAR_1 = 'renew_year_1'  #续费年限1
-    KEY_RENEW_AMOUNT_1 = 'renew_amount_1'  #续费金额1
     FREE_DAYS = 'free_days'  # 免费体验天数
 
     EDITION_1_YUAN = 'edition_1_yuan' # 标准版原价

+ 15 - 2
apps/tenant/employee/serializers.py

@@ -6,6 +6,7 @@ from apps.tenant.employee.models import Employee
 
 from utils.exceptions import CustomError
 from apps.account.models import User
+from apps.tenant.models import Tenant
 
 
 class EmployeeSerializer(serializers.ModelSerializer):
@@ -21,7 +22,7 @@ class EmployeeSerializer(serializers.ModelSerializer):
         fields = '__all__'
 
     def create(self, validated_data):
-        if self.initial_data['type'] == Employee.SUPER and Employee.checkSuper(self.context['request'].user.employee.tenant):
+        if int(self.initial_data['type']) == Employee.SUPER and Employee.checkSuper(self.context['request'].user.employee.tenant):
             raise CustomError(u'已存在一个平台管理员,禁止操作!')
         username = self.initial_data['tel']
         # 判断用户是否已经注册登陆过
@@ -33,6 +34,12 @@ class EmployeeSerializer(serializers.ModelSerializer):
             # 创建user实例
             user = User.objects.create_tenant_user(validated_data['type'], username, password)
 
+        #标准版 限制检修人人数为2
+        tenant = self.context['request'].user.employee.tenant
+        employees = Employee.objects.filter(tenant=tenant, type=Employee.EMPLOYEE).count()
+        if employees >= 2 and tenant.edition == Tenant.EDITION_1:
+            raise CustomError(u'只能添加2个检修人!')
+
         validated_data['user'] = user
         validated_data['tenant'] = self.context['request'].user.employee.tenant
 
@@ -46,7 +53,7 @@ class EmployeeSerializer(serializers.ModelSerializer):
     def update(self, instance, validated_data):
         if instance.tenant != self.context['request'].user.employee.tenant:
             raise CustomError(u'禁止跨企业操作!')
-        if self.initial_data['type'] == Employee.SUPER and Employee.checkSuper(instance.tenant, instance.id):
+        if int(self.initial_data['type']) == Employee.SUPER and Employee.checkSuper(instance.tenant, instance.id):
             raise CustomError(u'已存在一个平台管理员,禁止操作!')
         username = self.initial_data['tel']
         if username and self.initial_data['password'].strip() != '':
@@ -65,5 +72,11 @@ class EmployeeSerializer(serializers.ModelSerializer):
                                                        self.initial_data['password'],
                                                        is_active=is_active)
                 validated_data['user'] = user
+
+        # 标准版 限制检修人人数为2
+        employees = Employee.objects.filter(tenant=instance.tenant,type=Employee.EMPLOYEE).count()
+        if employees >= 2 and instance.tenant.edition == Tenant.EDITION_1:
+            raise CustomError(u'只能添加2个检修人!')
+
         instance = super(EmployeeSerializer, self).update(instance, validated_data)
         return instance

+ 1 - 1
apps/tenant/employee/views.py

@@ -37,7 +37,7 @@ class VisitorView(CustomModelViewSet):
         forbid_baoxiu = request.POST.get('forbid_baoxiu')
         instance = Employee.objects.filter(id=pk).first()
         if instance:
-            instance.status = 2 if forbid_baoxiu == '1' else 1
+            instance.status = 4 if forbid_baoxiu == '1' else 1
             instance.save()
         else:
             return response_error(u'报修人信息有误,请刷新重试。')

+ 5 - 1
apps/tenant/models.py

@@ -159,6 +159,11 @@ class Pay(models.Model):
         self.tenant.status = settings.PASS
         self.tenant.edition = self.edition_year.split(',')[0]
         self.tenant.save()
+        Pay.objects.filter(tenant=self.tenant, amount__isnull=True).delete()
+
+        from apps.tenant.notices.models import Notices
+        Notices.objects.filter(tenant=self.tenant,type=Notices.RENEW,end_data__isnull=True).update(end_date=datetime.datetime.now())
+
 
     # 支付宝回调,付款
     def payConfirm(self, no):
@@ -235,7 +240,6 @@ class Pay(models.Model):
         qrcode = ''
         if pay_channel == Pay.WECHAT:
             qrcode = WeChatResponse().unifiedOrder(pay.pay_no, round(float(Formater.formatAmountShow(amount)), 2))
-            pass
         elif pay_channel == Pay.ALIPAY:
             qrcode = Alipay.payUnifiedOrder(pay.pay_no, round(float(Formater.formatAmountShow(amount)), 2))
 

+ 3 - 2
apps/tenant/notices/models.py

@@ -1,6 +1,5 @@
 # coding=utf-8
 
-
 from django.db import models
 from django.conf import settings
 
@@ -10,9 +9,11 @@ from apps.tenant.models import Tenant
 class Notices(models.Model):
     NOTICE = 1
     MESSAGE = 2
+    RENEW = 3
     TYPE_CHOICES = (
         (NOTICE, u'集体通知'),
         (MESSAGE, u'个人消息'),
+        (RENEW, u'续费提醒'),
     )
 
     ALL = 1
@@ -30,7 +31,7 @@ class Notices(models.Model):
     title = models.CharField(max_length=50, verbose_name=u'标题')
     create_time = models.DateTimeField(verbose_name='发布时间', auto_now_add=True)
     create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建者", on_delete=models.PROTECT,
-                                    editable=False)
+                                    editable=False,),
     tenant = models.ForeignKey(Tenant, verbose_name=u'企业', on_delete=models.PROTECT, blank=True)
     type = models.PositiveSmallIntegerField(verbose_name=u'通知类型', choices=TYPE_CHOICES, default=NOTICE)
     range = models.PositiveSmallIntegerField(verbose_name=u'通知范围', choices=RANGE_CHOICES, default=ALL)

+ 3 - 1
apps/tenant/repair_order/models.py

@@ -38,7 +38,7 @@ class RepairOrder(models.Model):
         (TURN_EMPLOYEE, '转单'),
         (FINISH, '已完工,待评价'),
         (APPRAISE, '已评价'),
-        (CANCEL_HANG_UP, '取消挂起'),
+        (CANCEL_HANG_UP, '取消挂起,维修中'),
         (INVALID, '作废'),
     )
     no = models.CharField(max_length=50, verbose_name='单号', blank=True)
@@ -131,6 +131,8 @@ class RepairOrder(models.Model):
 
         self.status = settings.CHECKED
         self.save()
+        self.user.employee.baoxiu_count += 1
+        self.user.employee.save()
         RepairOrderRecord.objects.create(repair_order=self, status=settings.CHECKED, user=user)
         tenant_log(user.employee, BizLog.INSERT, u'审核报修工单[%s],id=%d' % (self.no, self.id))
 

+ 1 - 1
apps/tenant/repair_order/views.py

@@ -117,7 +117,7 @@ class RepairOrderViewSet(CustomModelViewSet):
     def turn_employee(self, request, pk):
         # 转单
         try:
-            user_ids = self.request.data.get('user_ids')
+            user_ids = request.data.get('user_id')
             if not user_ids:
                 return response_error('请选择维修工人!')
             user = self.request.user

+ 1 - 0
apps/tenant/views.py

@@ -90,6 +90,7 @@ class CompanyViewSet(CustomModelViewSet):
 
         try:
             with transaction.atomic():
+                Pay.objects.filter(tenant=request.user.employee.tenant, amount__isnull=True).delete()
                 if int(pay_channel) == Pay.WECHAT:
                     line_data = Pay.wechatPay(request.user, pk ,amount, edition_year)
                 elif int(pay_channel) == Pay.ALIPAY:

+ 9 - 1
apps/wxapp/repair_order/serializers.py

@@ -14,6 +14,14 @@ class RepairOrderDetailSerializer(serializers.ModelSerializer):
     images = serializers.SerializerMethodField()
     repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
     create_at = DelayTimeCharField(source='create_time', read_only=True)
+    start = serializers.SerializerMethodField()
+
+    def get_start(self, obj):
+        if obj.status == settings.APPRAISE:
+            repair_order_comment = RepairOrderComment.objects.filter(repair_order=obj).first()
+            if repair_order_comment:
+                return repair_order_comment.start
+        return 0
 
     def get_images(self, obj):
         return UploadSerializer(obj.images, many=True).data
@@ -22,7 +30,7 @@ class RepairOrderDetailSerializer(serializers.ModelSerializer):
         model = RepairOrder
         fields = (
             'id', 'status_text', 'status', 'no', 'fault_des', 'tel', 'name', 'create_at', 'device_address',
-            'repair_type_name', 'images', 'user_id')
+            'repair_type_name', 'images', 'user_id', 'start')
 
 
 class RepairOrderListSerializer(serializers.ModelSerializer):

+ 16 - 9
apps/wxapp/repair_order/views.py

@@ -38,7 +38,12 @@ class RepairOrderMineView(generics.ListAPIView):
     serializer_class = RepairOrderListSerializer
 
     def filter_queryset(self, queryset):
-        queryset = queryset.filter(tenant=self.request.user.employee.tenant, user=self.request.user)
+        # 服务评价,管理者可以看到所有,报修人只能看到自己报修的,检修人只能看到派给自己的单子
+        queryset = queryset.filter(tenant=self.request.user.employee.tenant)
+        if self.request.user.is_repair():
+            queryset = queryset.filter(user=self.request.user)
+        if self.request.user.is_employee():
+            queryset = queryset.filter(Q(repair_users=self.request.user) | Q(user=self.request.user))
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         return f.qs
 
@@ -58,13 +63,14 @@ class RepairOrderCountView(APIView):
             })
         queryset = RepairOrder.objects.filter(delete=False, tenant=self.request.user.employee.tenant)
         return response_ok({
-            'NOT_CHECKED_COUNT':queryset.filter(status__lte=settings.CHECKED).count(),
-            'CHECKED_COUNT':queryset.filter(status=settings.CHECKED,).count(),
-            'USER_NOT_CHECKED_COUNT':queryset.filter(status=settings.NOT_CHECKED,user = request.user).count(),
-            'USER_CHECKED_COUNT':queryset.filter(status=settings.CHECKED,user = request.user).count(),
-            'APPRAISE_COUNT': queryset.filter(status=settings.APPRAISE, user = request.user).count(),
-            'FINISH':queryset.filter(status=settings.FINISH, user = request.user).count(),
-            'DISPATCH':queryset.filter(status=settings.DISPATCH, user = request.user).count(),
+            'NOT_CHECKED_COUNT':queryset.filter(status__lte=settings.CHECKED).count(), # 审批中心,待审核待派单
+            'CHECKED_COUNT':queryset.filter(status=settings.CHECKED,).count(), # 维修中心,待派单
+            'USER_NOT_CHECKED_COUNT':queryset.filter(status=settings.NOT_CHECKED,user = request.user).count(), # 我的,待审核
+
+            'USER_CHECKED_COUNT':queryset.filter(status=settings.CHECKED,user = request.user).count(), # 我的,待派单
+            'APPRAISE_COUNT': queryset.filter(status=settings.APPRAISE, user = request.user).count(), # 我的,已完工
+            'FINISH':queryset.filter(status=settings.FINISH, user = request.user).count(), # 服务评价,待评价
+            'DISPATCH':queryset.filter(status=settings.DISPATCH, user = request.user).count(), # 我的,已派单
         })
 
 
@@ -76,7 +82,8 @@ class RepairOrderAllView(generics.ListAPIView):
     def filter_queryset(self, queryset):
         queryset = queryset.filter(tenant=self.request.user.employee.tenant)
         if self.request.user.is_employee():
-            queryset = queryset.filter(Q(repair_users=self.request.user) | Q(user=self.request.user))
+            #维修中心
+            queryset = queryset.filter(Q(repair_users=self.request.user) | Q(user=self.request.user) | Q(repair_users__isnull=True))
         elif self.request.user.is_repair():
             queryset = queryset.filter(user=self.request.user)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)

+ 6 - 0
apps/wxapp/serializers.py

@@ -40,6 +40,7 @@ class WechatLoginSerializer(serializers.Serializer):
             payload = jwt_payload_handler(user)
             customer_log(customer_wechat.customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_id = customer_wechat.customer.tenant and customer_wechat.customer.tenant.id or ''
+            tenant_edition = customer_wechat.customer.tenant and customer_wechat.customer.tenant.edition or Tenant.EDITION_1
             company_no = customer_wechat.customer.tenant and customer_wechat.customer.tenant.company_no or ''
             nick_name = customer_wechat.customer.tenant and customer_wechat.customer.tenant.company_name or settings.WEAPP['nick_name']
             is_validity = Tenant.check_validity(company_no)
@@ -49,6 +50,7 @@ class WechatLoginSerializer(serializers.Serializer):
                 'token': jwt_encode_handler(payload),
                 'openid': customer_wechat.openid,
                 'tenant_id': tenant_id,
+                'tenant_edition': tenant_edition,
                 'is_validity': is_validity,
                 'nick_name': nick_name,
                 'name': customer_wechat.customer.name or '',
@@ -79,11 +81,13 @@ class WechatBindSerializer(serializers.Serializer):
             payload = jwt_payload_handler(user)
             customer_log(customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_id = ''
+            tenant_edition = Tenant.EDITION_1
             nick_name = settings.WEAPP['nick_name']
             if customer.tenant:
                 tenant_id = customer.tenant.id
                 company_no = customer.tenant.company_no
                 nick_name = customer.tenant.company_name
+                tenant_edition = customer.tenant.edition
             elif company_no:
                 # 扫二维码,没有绑定企业的用户之间绑定企业
                 tenant = Tenant.objects.filter(company_no=company_no).first()
@@ -93,6 +97,7 @@ class WechatBindSerializer(serializers.Serializer):
                     tenant_id = tenant.id
                     company_no = tenant.company_no
                     nick_name = tenant.company_name
+                    tenant_edition = tenant.edition
             is_validity = Tenant.check_validity(company_no)
             return {
                 'token': jwt_encode_handler(payload),
@@ -105,6 +110,7 @@ class WechatBindSerializer(serializers.Serializer):
                 'user_type': customer.type,  # 用户类别,1为平台管理员,2为管理者,3检修人,4报修人
                 'forbid_baoxiu': 'true' and customer.status == Employee.DISABLE or 'false',  # 是否禁用报修,
                 'tenant_id': tenant_id,
+                'tenant_edition': tenant_edition,
                 'emplate_id': [settings.WEAPP['message_template_finish'],settings.WEAPP['message_template_wait_check'],
                                settings.WEAPP['message_template_dispatch'],],
             }

+ 1 - 0
apps/wxapp/tenant/views.py

@@ -44,6 +44,7 @@ class GetTenantView(APIView):
                 'position':emplayee.position,
                 'wxapp_img':emplayee.tenant.wxapp_img,
                 'user_type_text':emplayee.get_type_display(),
+                'edition_text':emplayee.tenant.get_edition_display(),
             }
             return response_ok(data)
         else:

+ 4 - 4
ly_baoxiu_admin/settings.py

@@ -203,7 +203,7 @@ REPAIR_STATUS_CHOICES = (
     (TURN_EMPLOYEE, '转单'),
     (FINISH, '已完工,待评价'),
     (APPRAISE, '已评价'),
-    (CANCEL_HANG_UP, '取消挂起'),
+    (CANCEL_HANG_UP, '取消挂起,维修中'),
     (INVALID, '作废'),
 )
 
@@ -285,9 +285,9 @@ WEAPP = {
 #支付宝支付
 ALIPAY_SETTING = {
     'notify_url':'https://baoxiu.zzliaoyuan.com/api/alipay_notify/',
-    'app_id': '2021002110695436',
-    'app_private_key': 'MIIEowIBAAKCAQEAp9Yuf4HzpWACOnO3QQ+Z1ne4wanzGdNcpEIkpNxhI0VmulystLm6TYQ8S1lARMoWSRtMdwxx4DuOUekKt6v5zIP7edk4euUYqqCfuDgqvVkmbxYBL+IF2hsR70Z6f9DEOlKc6jWz+arO1F4SLiw9WZhqIpx9XduWq7I5vuzuXA32jp0uqYFv/k8qsF0a2wRRNKU1EFqIWECGVsYQ8WIC/841hGuEWYDvAEzUsFmc1b4rsX4PoJxtajy4xvz9Cn4EXu4Ce9n+LKH+nCYazEsfliAUUxbvebiMykRzICpzn1n21yWWbJ705BVJZk9yiJsiLsDOuSRC4EV2XbQVBkn/oQIDAQABAoIBAH9sIMk1hCFeDtMJ32tJyOYG5wJBYQuOaJtcjC2OE0GQAzoh+g0LpOINLymVjTGsq9a9HwSTMjGnhZmycCyaKICZA2ey/ypunJeOczSNkAVJleBouGX+F6tLOgaLX52ChjgxWGiIdSdsArNA6FSdycYn7Qxx+swzVuTr3uORRjYkNccaJX47dqawN79ROtJrRIsc35rmzkWywt0Zv41Lun3rbqLlaE881xZ4awuUsm4rrAWAktwyU7bQ6P0kUrII+207penco/hmFN8xTLlO0an6ZdK2YhUM/xZvEaitbDZ6JMqIu7mbkZBLGFUoH4H2IaCMpUETdVE9ajpo4rt7xUECgYEA7wL1sQwpVgLXkoVx6CitN9g4hVdSi9Mpcjk8m4j1YpPxO2/p1Dtvg9oNU9SV3VN9lACOu4V5uH8cfnsGO8K1mVeyEykYUpCMZW2zKUlD+rDE5kSiGxAEuNL9JIUxXf1V8u0DGVBiPrYSbSZkGF181bTgYhAtXsrvOpA4Y051M5UCgYEAs8Qgmnytlotpm5YeAAeIT+2XdYsFgr4syb0IOxE6jjhCFe8cmdiaaRhMDLPXBYd9UGpCND5Xs6g8fFQrMd0jAXByMHPbeAJbyqu7Q3MfICiHx1q59I/8nsn9kR9kaCkySKuagI5G5zk+pK5kjAYrBQHMeQUes6dsXD0DWsOMmN0CgYEA2p0ybQZaqLlgxDwau+a4yWOUDyKX9hzmw/tmXD0hdVEsTNlIXz8d+NPxbMP9b7t2GXGJHCwx8XcScP3F7dNilyeHUc882Agu4nc8cH77Fsmoz5XnUCmOqB8UO9s4FGgrvU7cjsLfmcyffgand0HLdQ1ET23Mke+8cSyI5wxUVyECgYByizL3HSCCv3xgXgvpmuMZgtuyUw4E2+av+RoogPbdri01yrFfuivRcWDr6x/EbyvDNKHQpjS9ziIUWpFXaX+nqB2qj/g1BNO2VSyycsVPeWPi/AVnNuQRzcUbVnRlBnL66RU+eunk5Y3r4w9ARaHdw+Kk7kU81h5uu5XKnLWWpQKBgAHh2f+5NmawVHO67fyyh3EOKi0ulU6EHaz9n9+4sPQNpsSZCyZVU9EulLrfG5XxAZ5fvXlSsLku1v8PJkMKnH/hmHLD+0vKIG3q4gH5xSwwwqnS5P+uS+CrPrYu6GbGQv/6HYOBaWtEkN1M23p5RL7ip0hC61YnlnbsSkBR8yNa',
-    'alipay_public_key':'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArZ99sw89lpJALHy3gc0B+B59aaEBgqALT+B8TtTWm1yi07b/pmg9cFjcxv7dw4BK9bQPidx19V5X2eLt0EylZMhtA0gihbnOXVhtcTlMfF9F2EhSXMfoHlKsqL0fQlkyZrmVCvx6nTwdbbhOLobOnVcbG2L8hVlSNkR4KkvSxat15sO09IC1IIj27nUDfIto6mVVeM4a0/49ePcFnVzhJaoHSmr6IHCldk4ZHAu3CDp2g3ZXzC9SEWB5kQJOxejm2iafgrocguyQkGLhYL5uatEQGQdgri+9ZqepvWSDBdOqgLwJBlv/NxmcIHEq33FbSGzzOuLRgVER77bwdoDyDQIDAQAB',
+    'app_id': '2016101202110194',
+    'app_private_key': 'MIIEpAIBAAKCAQEArkjhoebB4tmy7oXxQZ8RyUH3CSqJnJSFsfZ/Ntjga+R7UGZ5NEBm92UeK2O6dYM/iSWBzIDjL2i5uqk3GdjJ+EUv1fN1oz0FjygDvaNDjo7FkgN+tRI4iSFkL/kRE+Rf0NQo1mZntqVm26ySMmsk0qr8JH4HE/3R6FiDiBvMezvYEWP/4QpmFbxQjeY3JXixJX+9Yf3mZMOW8OPNwA9zkD/5tSNvRQTdgl4aMVB6eGcJ2zhx+usJjdkITAuppzHKMdRgMpaLTTcyN8e62VRM8FUgmvhb6cyc1lob+cOswHR3Bkjw0CbM+WRbWBIq3kdhpkOB1QVanaWpFBTHVL3CNwIDAQABAoIBAGynr1OaY6IkCvO9ua0pmJMadwLV7DkcN0W94Y22JCPfrClx2XqD9C2kcuymHicJDmFYatWuPPTfm3sN5/ZLO492wt3mDJ8aeg7H6Z0e3g1QYUgouaP1mh2UHbvy0XzPUhUFT/hqm5o5AClQK00XkztrsgqmL499HJJ4LHh8rDzfCHAejxzZvczJJjW1Rozxot471FGqH61fRnkY1p2sTjfBw3TJpEtXUg/EAptDpa0Tu9HzC2LiyH7gM/kc7X35j2wbtyTIQ6ut0T0SW/BRsqPY5w3nFgMft/sDIMWWAbcMb1mX9JQvhxJajU+ZoYlRzUVPmheiqvYfY3NdATlBhuECgYEA4NN5+/9uM8H1y3GcARu4jt0YhhEHM9jxINxvN71WBzvGGikqD4sYY1ROfiz5TTj9dP4jaZtKwsbOpbCm43JMDOktEkbB6Gc6zWSvtvDsrVpzdGylF8vx1ziT0U1CFpXdkiXM3u4u8pknrJvSpdi+nGL9Lw/ajRR0BjBcbz1hdx8CgYEAxnNdsg5kLZMaLAu9SJU4v3mfE6Shujsgsc0h0bTDDD2E3jcLEuD1+ssdN0uxDqRXqzVvLIBeep8JXWX3rHyoM9GMwWSlzesaExP1NbPdHCYEsRAmNFNzxWLbwk4HT7wAJ1ecUvgI80N+KQOOrBAaKpuzsw1eA6DQIjbjCMRfyekCgYBbdSvWW15VJ735eMnhmYlGdKKZRywK52GP4JxNrHPmlWZNFhnKIOdW4ODdayYvR9OzV/7H4yhSe9VsiaQaOlC9n8159dbD19qP2zmvzeo5yuXUoq22NHy49IcNScRss6Ji5YWl2na2sZ72FJ1oYfeIXqxoDKb3ZS6dpea0Sd/wOQKBgQC71MnkE/cBo+/rrJjVsFdr8+N7JiHlML27TFssL5lFZpzx7stObRqk68aVZdEJ+Mb5x7OYPVAvY4ProO2RltNlaHt/OJIums2tLQC0ea9YSyu5o31lnW9AblduS4hkEZ9bnXLanOVryoAItdM+TGdX2NN3L7nCWV1mZOjyjVvUsQKBgQDLRNdf/BLhVYUOJe/cJ66JXMS2gBkMf0EnUdCMkZ+cidAonl4Dtrv8+b8haeuqL55SuPWUtvVD2VmLVOaZIE0yxGeVEW2jVi0FwiZoNFjntuJHuwoerFSW4AobajIy4xeg3LWSqxD2nKWxTCAXumwGozCdnCgCWQSp3+L+8Xu6oA==',
+    'alipay_public_key': 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlfOIgQCOmHu1qMdmrOlS3+mMmNab9ZWTmm6R0QP91+E9ShNQbBRizE/muY9QYowp4smCeZBxuVCq5KRDJqcCq/o0DKc2tW/wpBFZaWzIngJsxuwTdRX6zsmM1u/c6sgcPY4rNYc6Gs2Ago8imKceHIcCQqhXb8+m3JOlgTd/EnRFlufPyu8WwUWQqRGfLM95g03bC7yH/Bh7GU7yrx0pvBp9ywW13SyiM9Kgw8h291AzZLJHFGD0mkvKKAiU951WprbjmFG5gE90vhHdQJtUEBm1m5Hn7SWR2iMlUbS2y8GioFkOUOra3wt+BJZ8yw/Z3XeJj9LacYgCO1B/EIeSlwIDAQAB',
 }
 # 微信登录、支付
 WECHAT = {

+ 1 - 2
uis/tenant/company/index.html

@@ -128,6 +128,7 @@
                 {field: 'company_no', title: '企业编号', width: 100}
                 , {field: 'company_name', title: '企业名称', width: 200}
                 , {field: 'organ_code', title: '组织代码', width: 150}
+                , {field: 'edition_text', title: '版本', width: 100}
                 , {field: 'name', title: '联系人姓名', width: 120}
                 , {field: 'tel', title: '联系人电话', width: 120}
                 , {field: 'address', title: '联系人地址', width: 200}
@@ -135,8 +136,6 @@
                 , {field: 'create_time', title: '申请时间', width: 160}
                 , {field: 'status_text', title: '审核状态', width: 100}
                 , {field: 'username', title: '管理员账号', width: 200}
-                , {field: 'renew_time', title: '续费时间', width: 160}
-                , {field: 'renew_amount', title: '续费金额', width: 120}
                 , {field: 'reject_reason', title: '拒绝原因', width: 120}
                 , {title: "操作", width: 260, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
             ]]

+ 1 - 1
uis/tenant/company/pay_order.html

@@ -335,7 +335,7 @@
         function getQrcode(pay_edition){
            admin.req({
                 url: '/tenant/company/' + company_id + '/get_code/',
-                data: {company_id, pay_channel, pay_edition},
+                data: {pay_channel, pay_edition},
                 done: function (res) {
                     //生成二维码之前清空当前dom下的子元素(防止生成多张二维码)
                     $('#pay-code').empty()

+ 1 - 1
uis/tenant/visitor/forbid_baoxiu.html

@@ -62,7 +62,7 @@
 
         form.on('submit(component-form-element)', function (data) {
             var url = '/tenant/employee/visitor/' + id + '/forbid_baoxiu/';
-            console.log(data.field)
+
             admin.req({
                 url: url
                 , data: data.field

+ 2 - 2
uis/tenant/visitor/index.html

@@ -79,7 +79,7 @@
                 {field: 'name', title: '姓名', width: 200}
                 , {field: 'tel', title: '电话', width: 200}
                 , {field: 'baoxiu_count', title: '报修次数', width: 200}
-                , {field: 'forbid_baoxiu_text', title: '是否禁用报修', width: 200}
+                , {field: 'status_text', title: '是否禁用报修', width: 200}
                 , {width: 200, align: 'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
             ]]
             , page: true
@@ -121,7 +121,7 @@
                     type: 2,
                     title: '转员工',
                     shadeClose: false,
-                    area: ['700px', '700px'],
+                    area: ['50%', '80%'],
                     btn: ['保存', '取消'],
                     yes: function (index, dom) {
                         layui.submitChild();

+ 1 - 16
uis/zzlyadmin/config/index.html

@@ -23,22 +23,7 @@
         <div class="layui-card-body" pad15>
             <form class="layui-form" action="" lay-filter="component-form-element">
                 <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <label class="layui-form-label">续费年限:</label>
-                        <div class="layui-input-inline">
-                            <input type="text" name="renew_year_1" lay-verify="required" class="layui-input"
-                                   placeholder="整数"/>
-                        </div>
-                        <div class="layui-form-mid ">年</div>
-                    </div>
-                    <div class="layui-inline">
-                        <label class="layui-form-label">金额:</label>
-                        <div class="layui-input-inline">
-                            <input type="text" name="renew_amount_1" lay-verify="required" class="layui-input"
-                                   placeholder="整数"/>
-                        </div>
-                        <div class="layui-form-mid ">元</div>
-                    </div>
+
                     <div class="layui-inline">
                         <label class="layui-form-label">免费体验天数:</label>
                         <div class="layui-input-inline">

+ 1 - 0
uis/zzlyadmin/tenant/index.html

@@ -125,6 +125,7 @@
                 {field: 'company_no', title: '企业编号', width: 100}
                 , {field: 'company_name', title: '企业名称', width: 200}
                 , {field: 'organ_code', title: '组织代码', width: 150}
+                , {field: 'edition_text', title: '版本', width: 100}
                 , {field: 'name', title: '联系人姓名', width: 120}
                 , {field: 'tel', title: '联系人电话', width: 120}
                 , {field: 'address', title: '联系人地址', width: 200}

+ 0 - 6
utils/wx/wechat.py

@@ -244,12 +244,6 @@ class WeChat(object):
         full_filename = "%s%s" % (settings.MEDIA_ROOT, filename)
         with open(full_filename, 'wb') as destination:
             destination.write(result.content)
-
-
-        # with open('aa.png', 'wb') as f:
-        #     f.write(result.content)
-        #     print(4444444444,f)
-
         return filename
 
     @staticmethod