| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- # -*- coding: utf-8 -*-
- from django.shortcuts import render
- from django.http.response import HttpResponse,HttpResponseBadRequest
- from django.views.generic import ListView
- from django.core.exceptions import ObjectDoesNotExist
- import json
- from django.core import serializers
- import xlwt
- import requests
- from requests.auth import HTTPBasicAuth
- import json
- from io import BytesIO
- # from apps.EquipManage.views import CJSONEncoder
- from apps.AppInfoManage.models import MyUser,SCDstatus,CBDstatus,Equip,User_Log, Equip_SimInfo
- def get_siminfo(iccid):
- url = 'http://api.openluat.com/sim/iotcard/card'
- print('url:',url)
- appkey = "KDlhc9VY4rWSXkbM"
- appsecret = "DmwxcSB1b8dx7kLWqWMJNRLgyQhCvPJ7DHIfLdHIz9A18CifSHqJk3nWZ1vHv4cR"
- res = requests.post(url,json={'iccid':iccid},auth=HTTPBasicAuth(appkey,appsecret))
- return res
- def get_simsinfo(iccids):
- url = 'http://api.openluat.com/sim/iotcard/cards'
- print('url:',url)
- appkey = "KDlhc9VY4rWSXkbM"
- appsecret = "DmwxcSB1b8dx7kLWqWMJNRLgyQhCvPJ7DHIfLdHIz9A18CifSHqJk3nWZ1vHv4cR"
- res = requests.post(url,json={'iccids':iccids},auth=HTTPBasicAuth(appkey,appsecret))
- return res
- # Create your views here.
- # SIM卡列表:
- class SimInfo(ListView):
- def get(self, request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---用户")
- nums = SCDstatus.objects.filter(equip_id__equip_user=current_user).count()+CBDstatus.objects.filter(equip_id__equip_user=current_user).count()
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- nums = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency).count()+CBDstatus.objects.filter(
- equip_id__equip_agency=current_user.user_agency).count()
- else:
- print("---管理员")
- nums = SCDstatus.objects.all().count()+CBDstatus.objects.all().count()
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='SIM卡信息')
- return render(request, 'siminfo/siminfo.html', context={"nums": nums})
- def post(self, request):
- req = request.POST.get('req')
- print("req:", req)
- simid = request.POST.get('simid')
- if simid:
- res = get_siminfo(simid)
- return HttpResponse(res.text)
-
-
- if req == "reqdat":
- page = int(request.POST.get('page'))
- print("page:", page)
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- sta1 = SCDstatus.objects.filter(equip_id__equip_user=current_user)
- sta2 = CBDstatus.objects.filter(equip_id__equip_user=current_user)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
- sta2 = CBDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
- else:
- sta1 = SCDstatus.objects.all()
- sta2 = CBDstatus.objects.all()
- # 获取设备列表中的SIM卡的iccid号码:
- iccids = []
- # 获取设备的id:
- equip_ids = []
- # 获取设备的名称:
- equip_names = []
- # 遍历查询流量信息:
- siminfos = []
-
- for i in sta1:
- try:
- iccid = eval(i.scd_status)['iccid']
- except:
- iccid = ""
- iccids.append(iccid)
- equip_ids.append(str(i.equip_id))
- equip_names.append(str(i.equip_id.equip_name))
- for i in sta2:
- try:
- iccid = eval(i.cbd_status)['iccid']
- except:
- iccid = ""
- iccids.append(iccid)
- equip_ids.append(str(i.equip_id))
- equip_names.append(str(i.equip_id.equip_name))
- # print('all iccids :',iccids)
- # print('all equip_ids :',equip_ids)
- # print('all equip_names :',equip_names)
- iccids=iccids[(10*(page-1)):(page*10)]
- equip_ids=equip_ids[(10*(page-1)):(page*10)]
- equip_names=equip_names[(10*(page-1)):(page*10)]
- # print('iccids :',iccids)
- # print('equip_ids :',equip_ids)
- # print('equip_names :',equip_names)
- # 调用api查到的iccid号:
- equip_iccids = []
- iccids_str = ",".join(iccids)
- print("iccids_str:",iccids_str)
- res = get_simsinfo(iccids_str).content
- print('res',res)
- siminfo_str=str(res, encoding = "utf-8")
- siminfo_dict=eval(siminfo_str)
- # 保存调用查询流量的api返回的数据;
- dat = []
- for j in list(range(0,siminfo_dict['data']['count'])):
- equip_iccids.append(siminfo_dict['data']['card_list'][j]['iccid'])
- # print('equip_iccids:',equip_iccids)
- for j in list(range(0,len(iccids))):
- siminfo_dict=eval(siminfo_str)
- if (iccids[j] in equip_iccids) == True:
- dat.append(siminfo_dict['data']['card_list'][equip_iccids.index(iccids[j])])
- else:
- dat.append({})
- dat[j]['equip_id']=equip_ids[j]
- dat[j]['equip_name']=equip_names[j]
- # print("dat[%d]=%s" %(j,dat[j]))
- iccids[j] = ""# 每次判断玩将该值清空,防止多个设备用一个SIM卡测试时显示异常;
- # print('----- iccids :',iccids)
- print("------------------------",dat)
- data = json.dumps(dat,indent=4)
- # print("data:",data)
- return HttpResponse(data)
- # 查询单个卡流量信息:
- class SingleSim(ListView):
- def get(self, request):
- iccid = request.GET.get('iccid')
- print('iccid:',iccid)
- print('type iccid:',type(iccid))
- re = get_siminfo(iccid)
- print('re:',re)
-
- return HttpResponse(re)
- def post(self, request):
- return HttpResponseBadRequest()
- # 查询多个卡流量信息:
- class MultiSim(ListView):
- def get(self, request):
- iccids = request.GET.get('iccids')
- print("iccids:", iccids)
- re = get_simsinfo(iccids)
- print('re:',re)
- return HttpResponse(re)
- def post(self, request):
- return HttpResponseBadRequest()
- from datetime import datetime, date
- class CJSONEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, datetime):
- return obj.strftime('%Y-%m-%d %H:%M:%S')
- elif isinstance(obj, date):
- return obj.strftime('%Y-%m-%d')
- else:
- return json.JSONEncoder.default(self, obj)
- # 根据卡号查询设备
- class Reverse_Lookup(ListView):
- def get(self, request):
- pass
- def post(self, request):
- iccid = request.POST.get('simid')
- print(iccid)
- cbd_obj = CBDstatus.objects.all().values()
- scd_obj = SCDstatus.objects.all().values()
- dat = []
- for i in cbd_obj:
- try:
- if iccid == eval(i["cbd_status"])["iccid"]:
- print(eval(i["cbd_status"])["iccid"])
- print(i["off_time"])
- ic_eq = {"id":i["equip_id_id"],"lng":i["lng"],"lat":i["lat"],"offtime":i["off_time"]}
- dat.append(ic_eq)
- except Exception as e:
- # print("=====================================")
- # print(e)
- pass
- for x in scd_obj:
- try:
- # print(eval(x["scd_status"])["iccid"])
- # print(x["off_time"])
- if iccid == eval(x["scd_status"])["iccid"]:
- ic_eq = {"id":x["equip_id_id"],"lng":x["lng"],"lat":x["lat"],"offtime":x["off_time"]}
- dat.append(ic_eq)
- except Exception as e:
- # print("-----------------------------")
- # print(e)
- pass
- print(dat)
- data = json.dumps(dat, cls=CJSONEncoder)
- return HttpResponse(data)
- # 物联网卡查询套餐接口
- class Iccid_Select(ListView):
- def get(self,request):
- pass
- def post(self,request):
- iccid = request.POST.get("iccid")
- url = 'https://api.openluat.com/sim/iotcard/product/fetch'
- payload = {
- 'iccid': iccid
- }
- appkey = 'KDlhc9VY4rWSXkbM'
- appsecret = 'DmwxcSB1b8dx7kLWqWMJNRLgyQhCvPJ7DHIfLdHIz9A18CifSHqJk3nWZ1vHv4cR'
- #在 http://sim.openluat.com/apiinterface 查看自己的appkey,appsecret。
- auth = HTTPBasicAuth(appkey, appsecret)
- res = requests.post(url, json=payload, auth=auth)
- print(json.loads(res.text))
- return HttpResponse(res.text)
- # 物联网卡充值接口
- class Iccid_Pay(ListView):
- def get(self,request):
- pass
- def post(self,request):
- product_id = int(request.POST.get("product_id"))
- iccid = request.POST.get("iccid")
- num = int(request.POST.get("num"))
- extra_no = datetime.now().strftime("%Y%m%d%H%M%S")
- url = 'https://api.openluat.com/sim/iotcard/make_order'
- payload = {
- 'iccid': iccid,
- 'product_id': product_id,
- 'num': num,
- 'extra_no': extra_no,
- 'remark': '备注'
- }
- appkey = 'KDlhc9VY4rWSXkbM'
- appsecret = 'DmwxcSB1b8dx7kLWqWMJNRLgyQhCvPJ7DHIfLdHIz9A18CifSHqJk3nWZ1vHv4cR'
- #在 http://sim.openluat.com/apiinterface 查看自己的appkey,appsecret。
- auth = HTTPBasicAuth(appkey, appsecret)
- res = requests.post(url, json=payload, auth=auth)
- return HttpResponse(res.text)
- # Sim卡信息页面
- class SimInfo_View(ListView):
- def get(self,request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- if current_user.is_superuser:
- role = "superuser"
- elif current_user.is_staff:
- role = "staff"
- elif current_user.is_agency:
- role = "agency"
- else:
- role = "user"
- return render(request, 'siminfo/siminfo.html', context={"role":role})
- def post(self,request):
- pass
- # Sim卡信息列表
- class SimInfo_List(ListView):
- def get(self,request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- page = int(request.GET.get("page"))
- e_id = request.GET.get("e_id")
- iccid = request.GET.get("iccid")
- status = request.GET.get("status")
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---用户")
- if e_id:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_id__equip_id__contains=e_id).count()
- elif iccid:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,iccid__contains=iccid)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,iccid__contains=iccid).count()
- elif status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status).count()
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user).count()
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if e_id:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_id__equip_id__contains=e_id).count()
- elif iccid:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,iccid__contains=iccid)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,iccid__contains=iccid).count()
- elif status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status).count()
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency).count()
- else:
- print("---管理员")
- if e_id:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_id__contains=e_id).count()
- elif iccid:
- simlist = Equip_SimInfo.objects.filter(iccid__contains=iccid)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(iccid__contains=iccid).count()
- elif status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(account_status=status).count()
- else:
- simlist = Equip_SimInfo.objects.all()[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.all().count()
-
- return render(request, 'siminfo/siminfoList.html', context={"simlist":simlist,"nums":nums})
- def post(self,request):
- pass
- # Sim卡信息列表
- class SimInfo_ListView(ListView):
- def get(self,request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- page = int(request.GET.get("page"))
- e_type = request.GET.get("e_type")
- status = request.GET.get("status")
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---用户")
- if e_type != "" and status == "":
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_type=e_type).count()
- elif e_type == "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status).count()
- elif e_type != "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status,equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status,equip_type=e_type).count()
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user).count()
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if e_type != "" and status == "":
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_type=e_type).count()
- elif e_type == "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status).count()
- elif e_type != "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status,equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status,equip_type=e_type).count()
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency).count()
- else:
- print("---管理员")
- if e_type != "" and status == "":
- simlist = Equip_SimInfo.objects.filter(equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(equip_type=e_type).count()
- elif e_type == "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(account_status=status)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(account_status=status).count()
- elif e_type != "" and status != "":
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(account_status=status,equip_type=e_type)[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.filter(account_status=status,equip_type=e_type).count()
- else:
- simlist = Equip_SimInfo.objects.all()[(10*(page-1)):(page*10)]
- nums = Equip_SimInfo.objects.all().count()
-
- return render(request, 'siminfo/siminfoList.html', context={"simlist":simlist,"nums":nums})
- def post(self,request):
- pass
- # Sim卡信息图表
- class SimInfo_Chart(ListView):
- def get(self,request):
- pass
- def post(self,request):
- e_type = request.POST.get("etype")
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---用户")
- sta = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)
- if e_type:
- sta = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_type=e_type)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- sta = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)
- if e_type:
- sta = Equip_SimInfo.objects.filter(equip_type=e_type,equip_id__equip_agency=current_user.user_agency)
- else:
- print("---管理员")
- sta = Equip_SimInfo.objects.all()
- if e_type:
- sta = Equip_SimInfo.objects.filter(equip_type=e_type)
- dat = []
- for i in sta:
- dat.append(i.account_status)
- data = json.dumps(dat)
- return HttpResponse(data)
- # sim卡数据导出
- class SimInfo_Export(ListView):
- def get(self,request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- status = request.GET.get("status")
- filename = request.GET.get("filename")
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---用户")
- if status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status)
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status)
- else:
- simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)
- else:
- print("---管理员")
- if status:
- status = int(status)
- simlist = Equip_SimInfo.objects.filter(account_status=status)
- else:
- simlist = Equip_SimInfo.objects.all()
- sta2 = []
- for xx in simlist:
- sta2.append({"equip_id":xx.equip_id_id,"equip_name":xx.equip_name,"equip_type":xx.equip_type,
- "iccid":xx.iccid,"active_date":xx.active_date,"account_status":xx.account_status,
- "data_plan":xx.data_plan,"expiry_date":xx.expiry_date})
- title = ["设备ID","设备名称","设备类型","ICCID","激活日期","SIM卡状态","套餐","到期时间"]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- for i in range(len(title)): # 遍历列
- sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- for x in range(len(sta2)): # 遍历列表
- sheet.write(x+1,0,sta2[x]["equip_id"])
- sheet.write(x+1,1,sta2[x]["equip_name"])
- sheet.write(x+1,2,sta2[x]["equip_type"])
- sheet.write(x+1,3,sta2[x]["iccid"])
- sheet.write(x+1,4,sta2[x]["active_date"])
- sheet.write(x+1,5,sta2[x]["account_status"])
- sheet.write(x+1,6,sta2[x]["data_plan"])
- sheet.write(x+1,7,sta2[x]["expiry_date"])
- sheet.col(0).width = 256 * 18
- sheet.col(1).width = 256 * 18
- sheet.col(2).width = 256 * 18
- sheet.col(3).width = 256 * 18
- sheet.col(4).width = 256 * 18
- sheet.col(5).width = 256 * 18
- sheet.col(6).width = 256 * 18
- sheet.col(7).width = 256 * 18
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
- def post(self,request):
- pass
|