用户名已存在的bug

This commit is contained in:
caoqianming 2022-04-19 10:23:27 +08:00
parent 2c2172e990
commit dfd6ccef18
16 changed files with 103 additions and 19 deletions

View File

@ -1,3 +1,6 @@
from enum import Enum
NO_NEED_LEVEL_REMARK = {"code":"no_need_level_remark", "detail":"无需填写离岗说明"}
PHONE_F_WRONG = {"code":"phone_f_wrong", "detail":"手机号格式错误"}
PHONE_EXIST = {"code":"phone_exist", "detail":"手机号已存在"}

View File

@ -36,7 +36,7 @@ class Employee(CommonBModel):
show_atwork = models.BooleanField('是否展示在岗状态', default=True)
last_check_time = models.DateTimeField('打卡时间', null=True, blank=True)
not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200)
third_info = models.JSONField('三方信息', default=dict, null=True, blank=True)
third_info = models.JSONField('三方信息', default=dict, null=False, blank=True)
class Meta:
verbose_name = '员工补充信息'
verbose_name_plural = verbose_name

View File

@ -161,7 +161,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
if not third_info.get('dh_face_card', None):
_, res = dhClient.request(**dhapis['gen_card_id'])
cardId = res['id']
cardNumber = instance.id[:8] + rannum(2)
cardNumber = instance.id[3:8] + rannum(5)
now = datetime.now()
startDate = now.strftime("%Y-%m-%d %H:%M:%S")
endDate = (datetime(year=now.year+50,

0
apps/hrm/services.py Normal file
View File

View File

@ -83,7 +83,7 @@ class EmployeeViewSet(CustomModelViewSet):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data
objs = Employee.objects.filter(pk__in=vdata['pks'])
objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False)
infos = objs.values('third_info')
cards = []
for i in infos:
@ -95,13 +95,16 @@ class EmployeeViewSet(CustomModelViewSet):
"privilegeType": 1,
"resouceCode": i
})
json_data = {
"cardNumbers": cards,
"timeQuantumId": 1,
"cardPrivilegeDetails": details
}
dhClient.request(**dhapis['card_door_authority'], json=json_data)
objs.update(third_info__dh_channels = vdata['channels'])
if cards and details:
json_data = {
"cardNumbers": cards,
"timeQuantumId": 1,
"cardPrivilegeDetails": details
}
dhClient.request(**dhapis['card_door_authority'], json=json_data)
for i in objs:
i.third_info['dh_channels'] = vdata['channels']
Employee.objects.bulk_update(objs, fields = ['third_info'])
return Response()
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):

0
apps/mq/__init__.py Normal file
View File

3
apps/mq/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
apps/mq/apps.py Normal file
View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class MqConfig(AppConfig):
name = 'mq'

View File

3
apps/mq/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
apps/mq/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
apps/mq/views.py Normal file
View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@ -269,11 +269,16 @@ class UserUpdateSerializer(CustomModelSerializer):
"""
用户编辑序列化
"""
username = serializers.CharField(required=True, validators=[user_exist])
class Meta:
model = User
fields = ['username', 'name', 'avatar', 'is_active']
def update(self, instance, validated_data):
if User.objects.filter(username=validated_data['username']
).exclude(id=instance.id).exists():
raise ParseError(**USERNAME_EXIST)
return super().update(instance, validated_data)

View File

@ -56,6 +56,14 @@ dhapis = {
"url":"/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority",
"method":"post"
},
"mq_subscribe": {
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
"method":"post"
},
"mq_unsubscribe": {
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
"method":"delete"
}
}
# 寻息API接口

View File

@ -7,12 +7,13 @@ from apps.utils.mixins import MyLoggingMixin
from apps.utils.xunxi import xxClient
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from apps.utils.viewsets import CustomGenericViewSet
from rest_framework.mixins import CreateModelMixin
from rest_framework.decorators import action
from apps.third.serializers import RequestCommonSerializer
from rest_framework import serializers
# Create your views here.
@ -25,9 +26,9 @@ class DahuaTestView(MyLoggingMixin, APIView):
def get(self, request, *args, **kwargs):
# file_path_rela = '/media/default/avatar.png'
# _, res = dhClient.request(**dhapis['person_img_upload'], file_path_rela=file_path_rela)
_,res = dhClient.request(
url='/evo-apigw/evo-brm/1.0.0/person/subsystem/{}'.format(2059335),
method='get')
_, res = dhClient.request(
url='/evo-apigw/evo-brm/1.0.0/person/subsystem/{}'.format(2059335),
method='get')
return Response(res)
@ -81,6 +82,7 @@ class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet):
"""
return Response(xxapis)
class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
"""
大华通用调用接口
@ -113,3 +115,49 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
获取请求短标识
"""
return Response(dhapis)
@action(methods=['post'], detail=False, permission_classes=[IsAdminUser],
serializer_class=serializers.Serializer)
def subscribe(self, request, pk=None):
"""事件订阅
事件订阅
"""
json_data = {
"param": {
"monitors": [
{
"monitor": "http://127.0.0.1:8000/test",
"monitorType": "url",
"events": [
{
"category": "business",
},
{
"category": "alarm",
},
{
"category": "state",
}
]
}
],
"subsystem": {
"subsystemType": 0,
"name": "127.0.0.1_8000",
"magic": "127.0.0.1_8000"
}
}
}
dhClient.request(**dhapis['mq_subscribe'], json=json_data)
return Response()
@action(methods=['delete'], detail=False, permission_classes=[IsAdminUser],
serializer_class=serializers.Serializer)
def unsubscribe(self, request, pk=None):
"""取消事件订阅
取消事件订阅
"""
dhClient.request(**dhapis['mq_unsubscribe'], params={'name':'127.0.0.1_8000'})
return Response()

View File

@ -66,7 +66,7 @@ class DhClient:
self.isRuning = False
# self.t.join()
def request(self, url:str, method:str, params=dict(), json=dict(), timeout=4, file_path_rela=None, raise_exception=True):
def request(self, url:str, method:str, params=dict(), json=dict(), timeout=10, file_path_rela=None, raise_exception=True):
if self.isGetingToken:
req_num = 0
while True:
@ -106,7 +106,7 @@ class DhClient:
if raise_exception:
raise ParseError(**err_detail)
return 'fail', dict(detail=detail, code='dh_'+str(ret['code']))
return 'success', ret['data']
return 'success', ret['data'] if 'data' in ret else None
if raise_exception:
raise APIException(**DH_REQUEST_ERROR)
return 'error', DH_REQUEST_ERROR