From 6eabca53140101d9707ef67696f6eab807344cf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Mon, 22 Aug 2022 10:28:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E6=96=B9=E9=94=99=E8=AF=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/services.py | 2 +- apps/third/dahua.py | 10 ++++++---- apps/third/models.py | 3 ++- apps/third/serializers.py | 5 +++++ apps/third/speaker.py | 9 ++++++--- apps/third/views.py | 2 +- apps/third/xunxi.py | 9 +++++---- 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/apps/hrm/services.py b/apps/hrm/services.py index 9eed0030..9b2951a8 100755 --- a/apps/hrm/services.py +++ b/apps/hrm/services.py @@ -157,7 +157,7 @@ class HrmService: if dh_dchannels: pass else: - # 查找可授予的门禁 + # 查找可授予的门禁通道号 dh_dchannels = list(TDevice.objects.filter(type=TDevice.DEVICE_DCHANNEL, access_list__contains=ep.type).values_list('code', flat=True)) if dh_dchannels: diff --git a/apps/third/dahua.py b/apps/third/dahua.py index db12b22f..fc7b56ba 100644 --- a/apps/third/dahua.py +++ b/apps/third/dahua.py @@ -1,6 +1,7 @@ import json import time from threading import Thread +import traceback import uuid import requests @@ -79,7 +80,7 @@ class DhClient: headers=self.headers, params=params, json=json, timeout=timeout, files=files, verify=False) except Exception: - self.handle_log(result='error') + self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: raise APIException(**DH_REQUEST_ERROR) return 'error', DH_REQUEST_ERROR @@ -99,7 +100,7 @@ class DhClient: # self.handle_log(result='success', response=ret) # 成功的日志就不记录了 return 'success', ret['data'] if 'data' in ret else None - self.handle_log(result='error', response=None) + self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: raise APIException(**DH_REQUEST_ERROR) return 'error', DH_REQUEST_ERROR @@ -113,11 +114,12 @@ class DhClient: response_ms = int(response_timedelta.total_seconds() * 1000) return max(response_ms, 0) - def handle_log(self, result, response=None): + def handle_log(self, result, response=None, errors=None): self.log.update({ "result": result, "response": response, - "response_ms": self._get_response_ms() + "response_ms": self._get_response_ms(), + "errors": errors }) Tlog(**self.log).save() diff --git a/apps/third/models.py b/apps/third/models.py index 21dcd8a0..aa4e2f26 100755 --- a/apps/third/models.py +++ b/apps/third/models.py @@ -43,7 +43,8 @@ class TDevice(BaseModel): employee = models.OneToOneField(Employee, verbose_name='当前绑定人员', on_delete=models.SET_NULL, null=True, blank=True) is_clock = models.BooleanField('是否打卡设备', default=False) - access_list = models.JSONField('自动下发人员类型', default=list, null=False, blank=True, help_text='employee/remployee/visitor') + access_list = models.JSONField('自动下发人员类型', default=list, + null=False, blank=True, help_text='employee/remployee/visitor') third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) diff --git a/apps/third/serializers.py b/apps/third/serializers.py index 796fea48..5c6dc451 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -24,6 +24,11 @@ class TDeviceUpdateSerializer(CustomModelSerializer): model = TDevice fields = ['is_clock', 'access_list'] + def update(self, instance, validated_data): + if validated_data.get('access_list', []): + validated_data['access_list'] = ['employee', 'remployee', 'visitor'] + return super().update(instance, validated_data) + class TDeviceSimpleSerializer(CustomModelSerializer): class Meta: diff --git a/apps/third/speaker.py b/apps/third/speaker.py index b2076368..c2ac9bd3 100644 --- a/apps/third/speaker.py +++ b/apps/third/speaker.py @@ -1,5 +1,6 @@ import time from threading import Thread +import traceback import uuid import requests @@ -88,6 +89,7 @@ class SpClient: headers=self.headers, params=params, json=json, timeout=timeout, files=files, verify=False) except Exception: + self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: raise APIException(**SP_REQUEST_ERROR) return 'error', SP_REQUEST_ERROR @@ -104,7 +106,7 @@ class SpClient: return 'fail', dict(detail=detail, code='sp_'+str(ret['code'])) # self.handle_log(result='success', response=ret) return 'success', ret - self.handle_log(result='error', response=None) + self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: raise APIException(**SP_REQUEST_ERROR) return 'error', SP_REQUEST_ERROR @@ -147,10 +149,11 @@ class SpClient: response_ms = int(response_timedelta.total_seconds() * 1000) return max(response_ms, 0) - def handle_log(self, result, response=None): + def handle_log(self, result, response=None, errors=None): self.log.update({ "result": result, "response": response, - "response_ms": self._get_response_ms() + "response_ms": self._get_response_ms(), + "errors": errors }) Tlog(**self.log).save() diff --git a/apps/third/views.py b/apps/third/views.py index 0242a2ee..5442befa 100755 --- a/apps/third/views.py +++ b/apps/third/views.py @@ -233,7 +233,7 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet): 取消事件订阅 """ dhClient.request(**dhapis['mq_unsubscribe'], - params={'name': 'qyjy_ehs'}) + params={'name': settings.DAHUA_SUBSCRIBE}) return Response() @action(methods=['post'], detail=False, diff --git a/apps/third/xunxi.py b/apps/third/xunxi.py index 35b7aa78..128bd490 100644 --- a/apps/third/xunxi.py +++ b/apps/third/xunxi.py @@ -1,5 +1,6 @@ import time from threading import Thread +import traceback import uuid import requests from django.conf import settings @@ -86,7 +87,6 @@ class XxClient: # print_roundtrip(r) ret = r.json() if ret.get('errorCode') in ['1060000', 1060000]: - print(ret.get('errorCode')) self.get_token() # 重新获取token self.request(url, method, params, json, timeout, raise_exception) # 重新请求 else: @@ -99,7 +99,7 @@ class XxClient: return 'fail', err_detail # self.handle_log(result='success', response=None) return 'success', ret['data'] - self.handle_log(result='error', response=None) + self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: raise APIException(**XX_REQUEST_ERROR) return 'error', XX_REQUEST_ERROR @@ -113,10 +113,11 @@ class XxClient: response_ms = int(response_timedelta.total_seconds() * 1000) return max(response_ms, 0) - def handle_log(self, result, response=None): + def handle_log(self, result, response=None, errors=None): self.log.update({ "result": result, "response": response, - "response_ms": self._get_response_ms() + "response_ms": self._get_response_ms(), + "errors": errors }) Tlog(**self.log).save()