Explorar el Código

物联网卡更新操作

yf_fyh hace 3 años
padre
commit
d8d6d83191
Se han modificado 4 ficheros con 63 adiciones y 8 borrados
  1. 5 3
      apps/IOTCard/serializers.py
  2. 1 1
      apps/IOTCard/urls.py
  3. 55 2
      apps/IOTCard/views.py
  4. 2 2
      bigdataAPI/settings.py

+ 5 - 3
apps/IOTCard/serializers.py

@@ -1,10 +1,10 @@
 from rest_framework import serializers
+import datetime
 
 from .models import PlatSimInfo
 
 
 class PlatSimInfoSerializer(serializers.ModelSerializer):
-
     def to_representation(self, instance):
         """to_representation自定义序列化数据的返回,针对choice字段"""
         data = super().to_representation(instance)
@@ -12,11 +12,13 @@ class PlatSimInfoSerializer(serializers.ModelSerializer):
         data.update(input_type=instance.get_input_type_display())
         data.update(platform=instance.get_platform_display())
         return data
-
+    def update(self, instance, validated_data):
+        validated_data["upl_time"] = datetime.datetime.now()
+        return super().update(instance, validated_data)
     class Meta:
         model = PlatSimInfo
         fields = '__all__'
-        read_only = ["id", "upl_time"]
+        read_only_fields  = ["id", "upl_time"]
         extra_kwargs = {
             "upl_time": {
                 "format": "%Y-%m-%d %H:%M:%S"

+ 1 - 1
apps/IOTCard/urls.py

@@ -5,7 +5,7 @@ from . import views
 app_name = 'apps.IOTCard'
 
 router = routers.SimpleRouter()
-router.register('platformsimview', views.PlatformIOTCardViewSet)
+router.register('platsimview', views.PlatformIOTCardViewSet)
 rest_urlpatterns = router.urls
 
 urlpatterns = [

+ 55 - 2
apps/IOTCard/views.py

@@ -1,5 +1,5 @@
 from rest_framework import status
-from rest_framework.viewsets import ModelViewSet
+from rest_framework import viewsets
 from rest_framework.response import Response
 from rest_framework.decorators import action
 from rest_framework.serializers import ValidationError
@@ -16,7 +16,7 @@ from utils.utils import get_equip_list, Get_SIM_info
 # Create your views here.
 
 
-class PlatformIOTCardViewSet(ModelViewSet):
+class PlatformIOTCardViewSet(viewsets.ModelViewSet):
     serializer_class = PlatSimInfoSerializer
     pagination_class = CustomPagination
     queryset = PlatSimInfo.objects.all().order_by("expiry_date")
@@ -113,3 +113,56 @@ class PlatformIOTCardViewSet(ModelViewSet):
         self.perform_create(serializer)
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
+    def update(self, request, pk, *args, **kwargs):
+        req = request.data.get("req")
+        instance = self.get_object()
+        if req == "upgrade":
+            iccid = instance.simId
+            sim_operators,account_status,active_date,data_plan,data_usage,data_balance,expiry_date = Get_SIM_info(iccid).get_sim_info()
+            update_data = {
+                "sim_operators" : sim_operators,
+                "account_status" : account_status,
+                "active_date" : active_date,
+                "data_plan" : data_plan,
+                "data_usage" : data_usage,
+                "data_balance" : data_balance,
+                "expiry_date" : expiry_date
+            }
+        elif req == "change":
+            if instance.input_type == 1:
+                raise ValidationError("设备录入物联网卡禁止更改")
+            simId = request.POST.get("simId").strip()
+            if len(simId) > 20 or len(simId) < 19:
+                raise ValidationError("物联网卡长度介于19-20位")
+            if self.get_queryset().filter(simId=simId).exists():
+                raise ValidationError("预更改卡号已存在")
+
+            platform = instance.platform
+            device_id = instance.deviceId
+            if platform == 1:
+                res = requests.post(url="http://www.yfzhwlw.com/equip_simiccid",data={"e_id":device_id,"iccid":simId})
+                if res.text != "0":
+                    raise ValidationError("对应平台更换异常")
+            else:
+                res = requests.post(url="http://8.136.98.49:8002/api/api_gateway?method=forecast.send_control.device_sim",
+                                    data={"device_id": device_id,"iccid": simId,"type": "change"})
+                res_json = json.loads(res.text)
+                if res_json["message"] != "":
+                    raise ValidationError("对应平台更换异常")
+            sim_operators,account_status,active_date,data_plan,data_usage,data_balance,expiry_date = Get_SIM_info(simId).get_sim_info()
+            update_data = {
+                "simId": simId,
+                "sim_operators" : sim_operators,
+                "account_status" : account_status,
+                "active_date" : active_date,
+                "data_plan" : data_plan,
+                "data_usage" : data_usage,
+                "data_balance" : data_balance,
+                "expiry_date" : expiry_date
+            }
+        else:
+            raise ValidationError("未识别req参数")
+        serializer = self.get_serializer(instance, data=update_data, partial=True)
+        serializer.is_valid(raise_exception=True)
+        self.perform_update(serializer)
+        return Response(serializer.data)

+ 2 - 2
bigdataAPI/settings.py

@@ -82,7 +82,7 @@ DATABASES = {
         'NAME': 'bigdata_api',
         'USER': 'api',
         'PASSWORD': 'yfkj@6020',
-        'HOST': '114.115.147.140',
+        'HOST': '127.0.0.1',
         'PORT': 3306,
         'OPTIONS': {'charset': 'utf8mb4'}
     }
@@ -119,7 +119,7 @@ USE_I18N = True
 
 USE_L10N = True
 
-USE_TZ = True
+USE_TZ = False
 
 
 # Static files (CSS, JavaScript, Images)