超期未过延长期限一个月

This commit is contained in:
caoqianming 2021-01-27 14:28:45 +08:00
parent 13588d91ec
commit 925cf5fbd7
5 changed files with 47 additions and 29 deletions

View File

@ -100,7 +100,7 @@ class Companydis(APIView):
单位分布
"""
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'))
for i in tmp:
if i['geo__pname'] in nameMap:
@ -112,7 +112,7 @@ class Consumerdis(APIView):
学员分布
"""
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'))
for i in tmp:
if i['company__geo__pname'] in nameMap:

View File

@ -69,8 +69,8 @@ class Consumer(CommonModel):
collects = models.ManyToManyField(Question, verbose_name='收藏试题')
process = JSONField('练习进度', blank=True, default=dict)
ID_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
realname = 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)
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')

View File

@ -4,7 +4,7 @@ from crm.models import Consumer
from rest_framework.permissions import IsAuthenticated
from django.core.cache import cache
from django.utils import timezone
from datetime import datetime
from datetime import datetime, timedelta
# 学员接口列表
ConsumerPerms = [
'paper_view',
@ -22,10 +22,21 @@ VistorPerms = [
'questioncat_view',
'my_examtest',
]
from .spider import getZs
def get_consumerperm_list(consumer):
perms = list(consumer.role.perms.values_list('code', flat=True))
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)
return perms

27
test_server/crm/spider.py Normal file
View File

@ -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

View File

@ -33,6 +33,7 @@ from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSeri
from lxml import etree
from rbac.models import UserProfile
from django.http import Http404
from .spider import getZs
import time
appid = 'wxf1e9471c93f05ad6'
secret = '4bf7f9bd6c52634586bbe792a1f0a834'
@ -379,7 +380,7 @@ class ConsumerViewSet(ModelViewSet):
url_path='realinfo', url_name='get_realinfo', perms_map=[{'*':'*'}])
def realinfo(self, request):
'''
修改真实信息
修改查询信息
'''
if isinstance(request.user, Consumer):
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]':''}
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
candidates = getZs(request.query_params['realname'], request.query_params['ID_number'])
return Response({'candidates':candidates}, status=status.HTTP_200_OK)
@action(methods=['post'], detail=False,