超期未过延长期限一个月

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): 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:

View File

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

View File

@ -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,9 +22,20 @@ 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())):
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') 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

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