超期未过延长期限一个月
This commit is contained in:
parent
13588d91ec
commit
925cf5fbd7
|
|
@ -100,7 +100,7 @@ class Companydis(APIView):
|
||||||
单位分布
|
单位分布
|
||||||
"""
|
"""
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
ret = {'s':[], 't':'单位分布', 'max':300, 'min':0}
|
ret = {'s':[], 't':'单位分布', 'max':800, 'min':0}
|
||||||
tmp = Company.objects.exclude(geo__pname__isnull=True).values('geo__pname').annotate(total=Count('geo__pname'))
|
tmp = Company.objects.exclude(geo__pname__isnull=True).values('geo__pname').annotate(total=Count('geo__pname'))
|
||||||
for i in tmp:
|
for i in tmp:
|
||||||
if i['geo__pname'] in nameMap:
|
if i['geo__pname'] in nameMap:
|
||||||
|
|
@ -112,7 +112,7 @@ class Consumerdis(APIView):
|
||||||
学员分布
|
学员分布
|
||||||
"""
|
"""
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
ret = {'s':[], 't':'学员分布', 'max':600, 'min':0}
|
ret = {'s':[], 't':'学员分布', 'max':3000, 'min':0}
|
||||||
tmp = Consumer.objects.exclude(company__geo__pname__isnull=True).values('company__geo__pname').annotate(total=Count('company__geo__pname'))
|
tmp = Consumer.objects.exclude(company__geo__pname__isnull=True).values('company__geo__pname').annotate(total=Count('company__geo__pname'))
|
||||||
for i in tmp:
|
for i in tmp:
|
||||||
if i['company__geo__pname'] in nameMap:
|
if i['company__geo__pname'] in nameMap:
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,8 @@ class Consumer(CommonModel):
|
||||||
collects = models.ManyToManyField(Question, verbose_name='收藏试题')
|
collects = models.ManyToManyField(Question, verbose_name='收藏试题')
|
||||||
process = JSONField('练习进度', blank=True, default=dict)
|
process = JSONField('练习进度', blank=True, default=dict)
|
||||||
|
|
||||||
ID_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
|
ID_number = models.CharField('查询身份证号', max_length=100, null=True, blank=True)
|
||||||
realname = models.CharField('真实姓名', max_length=100, null=True, blank=True)
|
realname = models.CharField('查询真实姓名', max_length=100, null=True, blank=True)
|
||||||
|
|
||||||
ID_number1 = models.CharField('身份证号', max_length=100, null=True, blank=True)
|
ID_number1 = models.CharField('身份证号', max_length=100, null=True, blank=True)
|
||||||
create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='consumer_create_admin')
|
create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='consumer_create_admin')
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from crm.models import Consumer
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
# 学员接口列表
|
# 学员接口列表
|
||||||
ConsumerPerms = [
|
ConsumerPerms = [
|
||||||
'paper_view',
|
'paper_view',
|
||||||
|
|
@ -22,10 +22,21 @@ VistorPerms = [
|
||||||
'questioncat_view',
|
'questioncat_view',
|
||||||
'my_examtest',
|
'my_examtest',
|
||||||
]
|
]
|
||||||
|
from .spider import getZs
|
||||||
def get_consumerperm_list(consumer):
|
def get_consumerperm_list(consumer):
|
||||||
perms = list(consumer.role.perms.values_list('code', flat=True))
|
perms = list(consumer.role.perms.values_list('code', flat=True))
|
||||||
if consumer.exceed_date and (consumer.exceed_date < datetime.date(timezone.now())):
|
if consumer.exceed_date and (consumer.exceed_date < datetime.date(timezone.now())):
|
||||||
perms.append('account_exceed')
|
if consumer.name and consumer.ID_number1:
|
||||||
|
candidates = getZs(consumer.name, consumer.ID_number1)
|
||||||
|
if candidates:
|
||||||
|
perms.append('account_exceed')
|
||||||
|
else:
|
||||||
|
# 未通过考试增加30天期限
|
||||||
|
newdate = datetime.date(timezone.now() + timedelta(days=30))
|
||||||
|
consumer.exceed_date = newdate
|
||||||
|
consumer.save()
|
||||||
|
else:
|
||||||
|
perms.append('account_exceed')
|
||||||
cache.get_or_set('cperms_'+str(consumer.id), perms)
|
cache.get_or_set('cperms_'+str(consumer.id), perms)
|
||||||
return perms
|
return perms
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import requests
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
def getZs(realname, ID_number):
|
||||||
|
payload = {'IndexModel[name]': realname, 'IndexModel[identityNumber]': ID_number, 'IndexModel[certNumber]':'', 'IndexModel[candidateNumber]':''}
|
||||||
|
r = requests.post('https://fushe.chinansc.cn/open/candidate-list',data=payload)
|
||||||
|
html = etree.HTML(r.text)
|
||||||
|
results = html.xpath("//table[@class='cert-table']")
|
||||||
|
candidates = []
|
||||||
|
try:
|
||||||
|
for i in results:
|
||||||
|
img = i.xpath('tr/td/a/@href')
|
||||||
|
name = i.xpath('tr[1]/td[1]/text()')
|
||||||
|
ID_number = i.xpath('tr[1]/td[2]/text()')
|
||||||
|
report_number = i.xpath('tr[2]/td[1]/text()')
|
||||||
|
issue_date = i.xpath('tr[2]/td[2]/text()')
|
||||||
|
jsondata = {
|
||||||
|
'name':name[0],
|
||||||
|
'ID_number':ID_number[0],
|
||||||
|
'report_number':report_number[0],
|
||||||
|
'issue_date':issue_date[0],
|
||||||
|
'img':'https://fushe.chinansc.cn'+ img[0]
|
||||||
|
}
|
||||||
|
candidates.append(jsondata)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return candidates
|
||||||
|
|
@ -33,6 +33,7 @@ from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSeri
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from rbac.models import UserProfile
|
from rbac.models import UserProfile
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
|
from .spider import getZs
|
||||||
import time
|
import time
|
||||||
appid = 'wxf1e9471c93f05ad6'
|
appid = 'wxf1e9471c93f05ad6'
|
||||||
secret = '4bf7f9bd6c52634586bbe792a1f0a834'
|
secret = '4bf7f9bd6c52634586bbe792a1f0a834'
|
||||||
|
|
@ -379,7 +380,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
url_path='realinfo', url_name='get_realinfo', perms_map=[{'*':'*'}])
|
url_path='realinfo', url_name='get_realinfo', perms_map=[{'*':'*'}])
|
||||||
def realinfo(self, request):
|
def realinfo(self, request):
|
||||||
'''
|
'''
|
||||||
修改真实信息
|
修改查询信息
|
||||||
'''
|
'''
|
||||||
if isinstance(request.user, Consumer):
|
if isinstance(request.user, Consumer):
|
||||||
request.user.ID_number = request.data['ID_number']
|
request.user.ID_number = request.data['ID_number']
|
||||||
|
|
@ -394,28 +395,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
'''
|
'''
|
||||||
证书查询
|
证书查询
|
||||||
'''
|
'''
|
||||||
payload = {'IndexModel[name]': request.query_params['realname'], 'IndexModel[identityNumber]': request.query_params['ID_number'], 'IndexModel[certNumber]':'', 'IndexModel[candidateNumber]':''}
|
candidates = getZs(request.query_params['realname'], request.query_params['ID_number'])
|
||||||
r = requests.post('https://fushe.chinansc.cn/open/candidate-list',data=payload)
|
|
||||||
html = etree.HTML(r.text)
|
|
||||||
results = html.xpath("//table[@class='cert-table']")
|
|
||||||
candidates = []
|
|
||||||
try:
|
|
||||||
for i in results:
|
|
||||||
img = i.xpath('tr/td/a/@href')
|
|
||||||
name = i.xpath('tr[1]/td[1]/text()')
|
|
||||||
ID_number = i.xpath('tr[1]/td[2]/text()')
|
|
||||||
report_number = i.xpath('tr[2]/td[1]/text()')
|
|
||||||
issue_date = i.xpath('tr[2]/td[2]/text()')
|
|
||||||
jsondata = {
|
|
||||||
'name':name[0],
|
|
||||||
'ID_number':ID_number[0],
|
|
||||||
'report_number':report_number[0],
|
|
||||||
'issue_date':issue_date[0],
|
|
||||||
'img':'https://fushe.chinansc.cn'+ img[0]
|
|
||||||
}
|
|
||||||
candidates.append(jsondata)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
return Response({'candidates':candidates}, status=status.HTTP_200_OK)
|
return Response({'candidates':candidates}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@action(methods=['post'], detail=False,
|
@action(methods=['post'], detail=False,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue