feat: 直接使用大华的门禁权限接口吧
This commit is contained in:
parent
9c0423d0dc
commit
3a07c2b47c
|
@ -232,15 +232,6 @@ class HrmService:
|
||||||
# elif is_ok == 'error':
|
# elif is_ok == 'error':
|
||||||
# raise APIException(**DH_REQUEST_ERROR)
|
# raise APIException(**DH_REQUEST_ERROR)
|
||||||
cls.save(ep, data={'dh_dchannels': dh_dchannels})
|
cls.save(ep, data={'dh_dchannels': dh_dchannels})
|
||||||
from apps.third.models import DoorAuth
|
|
||||||
from apps.utils.snowflake import idWorker
|
|
||||||
DoorAuth.objects.filter(employee=ep).delete()
|
|
||||||
drs = []
|
|
||||||
for i in dh_dchannels:
|
|
||||||
id = idWorker.get_id()
|
|
||||||
drs.append(
|
|
||||||
DoorAuth(id=id, employee=ep, dchannel=TDevice.objects.get(code=i)))
|
|
||||||
DoorAuth.objects.bulk_create(drs)
|
|
||||||
return dh_dchannels
|
return dh_dchannels
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -478,39 +469,19 @@ class HrmService:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return None, '人脸数据获取失败请重新上传图片'
|
return None, '人脸数据获取失败请重新上传图片'
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def init_doorauth(cls):
|
|
||||||
"""
|
|
||||||
根据third_info里的dchannels信息生成表, 后续dchannels可以不用了
|
|
||||||
"""
|
|
||||||
from apps.third.models import DoorAuth
|
|
||||||
from apps.utils.snowflake import idWorker
|
|
||||||
DoorAuth.objects.all().delete()
|
|
||||||
for ind, ep in enumerate(Employee.objects.all().order_by('create_time')):
|
|
||||||
third_info = ep.third_info
|
|
||||||
if third_info.get('dh_dchannels', None):
|
|
||||||
drs = []
|
|
||||||
for i in third_info['dh_dchannels']:
|
|
||||||
id = idWorker.get_id()
|
|
||||||
drs.append(
|
|
||||||
DoorAuth(id=id, employee=ep, dchannel=TDevice.objects.get(code=i)))
|
|
||||||
DoorAuth.objects.bulk_create(drs)
|
|
||||||
print(f'{ind+1}-{ep.name}-doorauth已创建')
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def clear_bgl_r(cls):
|
def clear_bgl_r(cls):
|
||||||
"""
|
"""
|
||||||
清空办公室打卡门禁的相关方权限
|
清空办公室打卡门禁的相关方权限
|
||||||
"""
|
"""
|
||||||
from apps.third.models import DoorAuth
|
_, res = dhClient.request(**dhapis['card_door_authority_list'], json={
|
||||||
qs = DoorAuth.objects.filter(
|
"pageNum": 1, "pageSize": 1000, "channelCode": "1002222$7$0$0"})
|
||||||
employee__type='remployee', dchannel__code='1002222$7$0$0')
|
for i in res['pageData']:
|
||||||
for ins in qs:
|
ep = Employee.objects.get(third_info__dh_face_card=i['cardNumber'])
|
||||||
dh_face_card = ins.employee.third_info['dh_face_card']
|
dh_face_card = i['cardNumber']
|
||||||
dh_id = ins.employee.third_info['dh_id']
|
dh_id = ep.third_info['dh_id']
|
||||||
rdict = {"personIdsString": str(dh_id),
|
rdict = {"personIdsString": str(dh_id),
|
||||||
"cardNumberString": str(dh_face_card), "channelCode": ins.dchannel.code}
|
"cardNumberString": str(dh_face_card), "channelCode": "1002222$7$0$0"}
|
||||||
dhClient.request(
|
dhClient.request(
|
||||||
**dhapis['card_door_authority_delete'], json=rdict)
|
**dhapis['card_door_authority_delete'], json=rdict)
|
||||||
ins.delete()
|
print(f'{ep.name}-办公室打卡权限已删除')
|
||||||
print(f'{ins.employee.name}-办公室打卡权限已删除')
|
|
||||||
|
|
|
@ -70,6 +70,10 @@ dhapis = {
|
||||||
},
|
},
|
||||||
"card_door_authority_delete": {
|
"card_door_authority_delete": {
|
||||||
"url": "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority/removeAuthorizeAllCardNumberByChannelCode",
|
"url": "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority/removeAuthorizeAllCardNumberByChannelCode",
|
||||||
|
"method": "post",
|
||||||
|
},
|
||||||
|
"card_door_authority_list": {
|
||||||
|
"url": "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority/ChannelWithAuthorizeStatus/bycondition/combined",
|
||||||
"method": "post"
|
"method": "post"
|
||||||
},
|
},
|
||||||
"mq_subscribe": {
|
"mq_subscribe": {
|
||||||
|
|
|
@ -2,7 +2,7 @@ from email.mime import base
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, SpeakerViewSet, XxCommonViewSet, XxTestView
|
from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, SpeakerViewSet, XxCommonViewSet, XxTestView
|
||||||
from apps.third.views_d import BltViewSet, TDeviceViewSet, TlogViewSet, DoorAuthViewSet
|
from apps.third.views_d import BltViewSet, TDeviceViewSet, TlogViewSet
|
||||||
|
|
||||||
API_BASE_URL = 'api/third/'
|
API_BASE_URL = 'api/third/'
|
||||||
HTML_BASE_URL = 'third/'
|
HTML_BASE_URL = 'third/'
|
||||||
|
@ -14,7 +14,7 @@ router.register('speaker', SpeakerViewSet, basename='api_speaker')
|
||||||
router.register('tdevice', TDeviceViewSet, basename='tdevice')
|
router.register('tdevice', TDeviceViewSet, basename='tdevice')
|
||||||
router.register('tlog', TlogViewSet, basename='tlog')
|
router.register('tlog', TlogViewSet, basename='tlog')
|
||||||
router.register('tdevice/blt', BltViewSet, basename='blt')
|
router.register('tdevice/blt', BltViewSet, basename='blt')
|
||||||
router.register('doorauth', DoorAuthViewSet, basename='doorauth')
|
# router.register('doorauth', DoorAuthViewSet, basename='doorauth')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
path(API_BASE_URL + 'dahua/test/', DahuaTestView.as_view()),
|
path(API_BASE_URL + 'dahua/test/', DahuaTestView.as_view()),
|
||||||
|
|
|
@ -16,6 +16,8 @@ from rest_framework.exceptions import ParseError
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin, UpdateModelMixin
|
from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin, UpdateModelMixin
|
||||||
from apps.utils.serializers import PkSerializer
|
from apps.utils.serializers import PkSerializer
|
||||||
|
from apps.hrm.serializers import EmployeeShortSerializer
|
||||||
|
from apps.hrm.models import Employee
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
|
|
||||||
|
|
||||||
|
@ -462,6 +464,31 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
|
||||||
i['my_info'] = tds_dict[i['channelCode']]
|
i['my_info'] = tds_dict[i['channelCode']]
|
||||||
return Response(res)
|
return Response(res)
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||||
|
serializer_class=Serializer, logging_methods=[])
|
||||||
|
def dchannel_auth(self, request):
|
||||||
|
"""
|
||||||
|
门禁权限
|
||||||
|
|
||||||
|
门禁权限
|
||||||
|
"""
|
||||||
|
_, res = dhClient.request(
|
||||||
|
**dhapis['card_door_authority_list'], json=request.data)
|
||||||
|
codes = []
|
||||||
|
if res.get('pageData', None):
|
||||||
|
for i in res['pageData']:
|
||||||
|
codes.append(i['cardNumber'])
|
||||||
|
eps_info = EmployeeShortSerializer(
|
||||||
|
instance=Employee.objects.filter(third_info__dh_face_card__in=codes), many=True).data
|
||||||
|
eps_dict = {}
|
||||||
|
for i in eps_info:
|
||||||
|
eps_dict[i['third_info']['dh_face_card']] = i
|
||||||
|
for i in res['pageData']:
|
||||||
|
i['my_info'] = {}
|
||||||
|
if i['cardNumber'] in eps_dict:
|
||||||
|
i['my_info'] = eps_dict[i['cardNumber']]
|
||||||
|
return Response(res)
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post': 'tdevice.label_location'},
|
@action(methods=['post'], detail=True, perms_map={'post': 'tdevice.label_location'},
|
||||||
serializer_class=LabelLocationSerializer)
|
serializer_class=LabelLocationSerializer)
|
||||||
def label_location(self, request, pk=None):
|
def label_location(self, request, pk=None):
|
||||||
|
|
Loading…
Reference in New Issue