Browse Source

api接口

lyh 1 year ago
parent
commit
2e5b75d851

+ 1 - 1
apps/customer/models.py

@@ -133,7 +133,7 @@ class CustomerVehicle(models.Model):
 
 
 
 
 class CustomerAddress(models.Model):
 class CustomerAddress(models.Model):
-    customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT)
+    customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT, editable=False)
     name = models.CharField(max_length=100, verbose_name=u"姓名")
     name = models.CharField(max_length=100, verbose_name=u"姓名")
     tel = models.CharField(max_length=50, verbose_name=u'电话')
     tel = models.CharField(max_length=50, verbose_name=u'电话')
     area = models.CharField(max_length=200, verbose_name=u"地区")
     area = models.CharField(max_length=200, verbose_name=u"地区")

+ 3 - 0
apps/wechat/activity/views.py

@@ -1,6 +1,7 @@
 # coding=utf-8
 # coding=utf-8
 
 
 from rest_framework import generics
 from rest_framework import generics
+from utils.permission import IsCustomerUser
 
 
 from utils import response_ok
 from utils import response_ok
 from .serializers import ActivitySerializer
 from .serializers import ActivitySerializer
@@ -8,7 +9,9 @@ from apps.activity.models import Activity
 from apps.activity.filters import ActivityFilter
 from apps.activity.filters import ActivityFilter
 
 
 
 
+
 class ActivityListViewSet(generics.ListAPIView):
 class ActivityListViewSet(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Activity.objects.filter(delete=False)
     queryset = Activity.objects.filter(delete=False)
     serializer_class = ActivitySerializer
     serializer_class = ActivitySerializer
 
 

+ 0 - 7
apps/wechat/customer/serializers.py

@@ -41,13 +41,6 @@ class CustomerAddressSerializer(serializers.ModelSerializer):
         instance = super(CustomerAddressSerializer, self).create(validated_data)
         instance = super(CustomerAddressSerializer, self).create(validated_data)
         return instance
         return instance
 
 
-    def update(self, instance, validated_data):
-        if instance.delete:
-            raise CustomError(u'该收货地址已经被删除,禁止操作')
-        if validated_data['default']:
-            CustomerAddress.objects.filter(Q(customer=instance.customer), Q(delete=False), ~Q(id=instance.id)).update(default=False)
-        instance = super(CustomerAddressSerializer, self).update(instance, validated_data)
-        return instance
 
 
 
 
 class ProductOrderSerializer(serializers.ModelSerializer):
 class ProductOrderSerializer(serializers.ModelSerializer):

+ 5 - 2
apps/wechat/customer/urls.py

@@ -14,5 +14,8 @@ urlpatterns = [
     url(r'^maint_reserve/$', MaintOrderReserveViewSet.as_view()),
     url(r'^maint_reserve/$', MaintOrderReserveViewSet.as_view()),
     url(r'^maint_reserve/options/$', MaintReserveOptionsView.as_view()),
     url(r'^maint_reserve/options/$', MaintReserveOptionsView.as_view()),
     url(r'^vehicle/$', CustomerVehicleViewSet.as_view()),
     url(r'^vehicle/$', CustomerVehicleViewSet.as_view()),
-    url(r'^address/$', CustomerAddressViewSet.as_view()),
-]
+]
+
+router = SimpleRouter()
+router.register(r'address', CustomerAddressViewSet)
+urlpatterns += router.urls

+ 67 - 32
apps/wechat/customer/views.py

@@ -8,6 +8,9 @@ from utils import response_ok
 from apps.account import tenant_log
 from apps.account import tenant_log
 from apps.foundation.models import BizLog
 from apps.foundation.models import BizLog
 from rest_framework.exceptions import NotFound
 from rest_framework.exceptions import NotFound
+from rest_framework.viewsets import ModelViewSet
+from utils.permission import IsCustomerUser
+from utils.custom_modelviewset import CustomModelViewSet
 
 
 from .serializers import *
 from .serializers import *
 from apps.customer.filters import *
 from apps.customer.filters import *
@@ -16,7 +19,8 @@ from apps.product_order.filters import *
 from apps.maint_order.filters import *
 from apps.maint_order.filters import *
 
 
 
 
-class VehicleDriveReserveViewSet(generics.ListAPIView):
+class VehicleDriveReserveViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = VehicleDriveReserve.objects.filter(delete=False)
     queryset = VehicleDriveReserve.objects.filter(delete=False)
     serializer_class = VehicleDriveReserveSerializer
     serializer_class = VehicleDriveReserveSerializer
 
 
@@ -32,13 +36,20 @@ class VehicleDriveReserveViewSet(generics.ListAPIView):
             return response_ok([])
             return response_ok([])
         return data
         return data
 
 
-    def perform_create(self, serializer):
-        super(VehicleDriveReserveViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加预约试驾,id=%d' % instance.id, validated_data)
+    def create(self, request, *args, **kwargs):
+        with transaction.atomic():
+            serializer = self.get_serializer(data=request.data)
+            serializer.is_valid(raise_exception=True)
+            serializer.save()
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加预约试驾,id=%d' % instance.id, validated_data)
+
+        return response_ok()
 
 
-class VehicleInquiryViewSet(generics.ListAPIView):
+
+class VehicleInquiryViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = VehicleInquiry.objects.filter(delete=False)
     queryset = VehicleInquiry.objects.filter(delete=False)
     serializer_class = VehicleInquirySerializer
     serializer_class = VehicleInquirySerializer
 
 
@@ -54,14 +65,19 @@ class VehicleInquiryViewSet(generics.ListAPIView):
             return response_ok([])
             return response_ok([])
         return data
         return data
 
 
-    def perform_create(self, serializer):
-        super(VehicleInquiryViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加新车询价,id=%d' % instance.id, validated_data)
+    def create(self, request, *args, **kwargs):
+        with transaction.atomic():
+            serializer = self.get_serializer(data=request.data)
+            serializer.is_valid(raise_exception=True)
+            serializer.save()
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加新车询价,id=%d' % instance.id, validated_data)
 
 
+        return response_ok()
 
 
-class UsedVehicleInquiryViewSet(generics.ListAPIView):
+class UsedVehicleInquiryViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = UsedVehicleInquiry.objects.filter(delete=False)
     queryset = UsedVehicleInquiry.objects.filter(delete=False)
     serializer_class = UsedVehicleInquirySerializer
     serializer_class = UsedVehicleInquirySerializer
 
 
@@ -77,14 +93,19 @@ class UsedVehicleInquiryViewSet(generics.ListAPIView):
             return response_ok([])
             return response_ok([])
         return data
         return data
 
 
-    def perform_create(self, serializer):
-        super(UsedVehicleInquiryViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加二手车询价,id=%d' % instance.id, validated_data)
+    def create(self, request, *args, **kwargs):
+        with transaction.atomic():
+            serializer = self.get_serializer(data=request.data)
+            serializer.is_valid(raise_exception=True)
+            serializer.save()
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加二手车询价,id=%d' % instance.id, validated_data)
 
 
+        return response_ok()
 
 
-class UsedVehicleEstimateViewSet(generics.ListAPIView):
+class UsedVehicleEstimateViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = UsedVehicleEstimate.objects.filter(delete=False)
     queryset = UsedVehicleEstimate.objects.filter(delete=False)
     serializer_class = UsedVehicleEstimateSerializer
     serializer_class = UsedVehicleEstimateSerializer
 
 
@@ -100,14 +121,20 @@ class UsedVehicleEstimateViewSet(generics.ListAPIView):
             return response_ok([])
             return response_ok([])
         return data
         return data
 
 
-    def perform_create(self, serializer):
-        super(UsedVehicleEstimateViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加二手车预估,id=%d' % instance.id, validated_data)
+    def create(self, request, *args, **kwargs):
+        with transaction.atomic():
+            serializer = self.get_serializer(data=request.data)
+            serializer.is_valid(raise_exception=True)
+            serializer.save()
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加二手车预估,id=%d' % instance.id, validated_data)
+
+        return response_ok()
 
 
 
 
-class MaintOrderReserveViewSet(generics.ListAPIView):
+class MaintOrderReserveViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = MaintOrderReserve.objects.filter(delete=False)
     queryset = MaintOrderReserve.objects.filter(delete=False)
     serializer_class = MaintOrderReserveSerializer
     serializer_class = MaintOrderReserveSerializer
 
 
@@ -123,14 +150,20 @@ class MaintOrderReserveViewSet(generics.ListAPIView):
             return response_ok([])
             return response_ok([])
         return data
         return data
 
 
-    def perform_create(self, serializer):
-        super(MaintOrderReserveViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加售后预约单,id=%d' % instance.id, validated_data)
+    def create(self, request, *args, **kwargs):
+        with transaction.atomic():
+            serializer = self.get_serializer(data=request.data)
+            serializer.is_valid(raise_exception=True)
+            serializer.save()
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加售后预约单,id=%d' % instance.id, validated_data)
+
+        return response_ok()
 
 
 
 
 class ProductOrderViewSet(generics.ListAPIView):
 class ProductOrderViewSet(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = ProductOrder.objects.filter(delete=False)
     queryset = ProductOrder.objects.filter(delete=False)
     serializer_class = ProductOrderSerializer
     serializer_class = ProductOrderSerializer
 
 
@@ -147,7 +180,8 @@ class ProductOrderViewSet(generics.ListAPIView):
         return data
         return data
 
 
 
 
-class CustomerVehicleViewSet(generics.ListAPIView):
+class CustomerVehicleViewSet(generics.ListCreateAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = CustomerVehicle.objects.filter()
     queryset = CustomerVehicle.objects.filter()
     serializer_class = CustomerVehicleSerializer
     serializer_class = CustomerVehicleSerializer
 
 
@@ -191,7 +225,8 @@ class CustomerVehicleViewSet(generics.ListAPIView):
         return response_ok()
         return response_ok()
 
 
 
 
-class CustomerAddressViewSet(generics.ListAPIView):
+class CustomerAddressViewSet(CustomModelViewSet):
+    permission_classes = [IsCustomerUser, ]
     queryset = CustomerAddress.objects.filter(delete=False)
     queryset = CustomerAddress.objects.filter(delete=False)
     serializer_class = CustomerAddressSerializer
     serializer_class = CustomerAddressSerializer
 
 

+ 20 - 0
apps/wechat/customer/xgj.py

@@ -0,0 +1,20 @@
+# coding=utf-8
+
+from django.db import transaction
+from rest_framework.views import APIView
+from rest_framework.decorators import action
+from rest_framework import generics
+from utils import response_ok
+from apps.account import tenant_log
+from apps.foundation.models import BizLog, Config
+from rest_framework.exceptions import NotFound
+
+
+class XGJ():
+    @staticmethod
+    def drive_reserve(instance): #试驾预约单
+        xgj_ip = Config.getConfigValue(Config.KEY_XGJ_IP)
+        xgj_session_key = Config.getConfigValue(Config.KEY_XGJ_SESSION_KEY)
+
+        if xgj_ip and xgj_session_key:
+            pass

+ 0 - 0
apps/wechat/maint_order/__init__.py


+ 4 - 0
apps/wechat/product/views.py

@@ -2,6 +2,7 @@
 
 
 from rest_framework import generics
 from rest_framework import generics
 from rest_framework.exceptions import NotFound
 from rest_framework.exceptions import NotFound
+from utils.permission import IsCustomerUser
 
 
 from utils import response_ok
 from utils import response_ok
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
@@ -15,6 +16,7 @@ from .serializers import ProductSerializer, ProductDetailSerializer, ProductType
 
 
 
 
 class ProductListView(generics.ListAPIView):
 class ProductListView(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Product.objects.filter(delete=False)
     queryset = Product.objects.filter(delete=False)
     serializer_class = ProductSerializer
     serializer_class = ProductSerializer
 
 
@@ -31,6 +33,7 @@ class ProductListView(generics.ListAPIView):
 
 
 
 
 class ProductTypeListView(generics.ListAPIView):
 class ProductTypeListView(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Option.objects.filter(enable=True, delete=False, type=Option.PRODUCT_CATEGORY)
     queryset = Option.objects.filter(enable=True, delete=False, type=Option.PRODUCT_CATEGORY)
     serializer_class = ProductTypeSerializer
     serializer_class = ProductTypeSerializer
 
 
@@ -47,6 +50,7 @@ class ProductTypeListView(generics.ListAPIView):
 
 
 
 
 class ProductDetailView(generics.RetrieveAPIView):
 class ProductDetailView(generics.RetrieveAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Product.objects.filter(enabled=True, delete=False)
     queryset = Product.objects.filter(enabled=True, delete=False)
     serializer_class = ProductDetailSerializer
     serializer_class = ProductDetailSerializer
 
 

+ 4 - 3
apps/wechat/serializers.py

@@ -74,9 +74,9 @@ class WechatLoginSerializer(serializers.Serializer):
 
 
             payload = jwt_payload_handler(user)
             payload = jwt_payload_handler(user)
             tenant_log(user, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_log(user, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
-            return {
+            result = {
                 'bind': 1,
                 'bind': 1,
-                'token': jwt_encode_handler(payload),
+                'token': 'JWT {}'.format(jwt_encode_handler(payload)),
                 'openid': customer_wechat.openid,
                 'openid': customer_wechat.openid,
                 'customer': customer_wechat.customer_id,
                 'customer': customer_wechat.customer_id,
                 'name': customer_wechat.customer.name or '',
                 'name': customer_wechat.customer.name or '',
@@ -84,6 +84,7 @@ class WechatLoginSerializer(serializers.Serializer):
                 'face': customer_wechat.customer.face and customer_wechat.customer.face.get_path() or '',
                 'face': customer_wechat.customer.face and customer_wechat.customer.face.get_path() or '',
                 'gender': customer_wechat.customer.gender or 0,
                 'gender': customer_wechat.customer.gender or 0,
             }
             }
+            return result
 
 
         else:
         else:
             msg = '参数无效'
             msg = '参数无效'
@@ -103,7 +104,7 @@ class WechatBindSerializer(serializers.Serializer):
             tenant_log(user, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_log(user, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
 
 
             return {
             return {
-                'token': jwt_encode_handler(payload),
+                'token': 'JWT {}'.format(jwt_encode_handler(payload)),
                 'customer': customer.id or '',
                 'customer': customer.id or '',
                 'name': customer.name or '',
                 'name': customer.name or '',
                 'tel': customer.tel or '',
                 'tel': customer.tel or '',

+ 3 - 0
apps/wechat/store/views.py

@@ -1,6 +1,7 @@
 # coding=utf-8
 # coding=utf-8
 
 
 from rest_framework import generics
 from rest_framework import generics
+from utils.permission import IsCustomerUser
 
 
 from utils import response_ok
 from utils import response_ok
 
 
@@ -10,6 +11,7 @@ from .serializers import *
 
 
 
 
 class ShopViewSet(generics.ListAPIView):
 class ShopViewSet(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Shop.objects.filter(delete=False)
     queryset = Shop.objects.filter(delete=False)
     serializer_class = ShopSerializer
     serializer_class = ShopSerializer
 
 
@@ -24,6 +26,7 @@ class ShopViewSet(generics.ListAPIView):
 
 
 
 
 class ShopMapListView(generics.ListAPIView):
 class ShopMapListView(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Shop.objects.filter(delete=False)
     queryset = Shop.objects.filter(delete=False)
     serializer_class = ShopDetailSerializer
     serializer_class = ShopDetailSerializer
 
 

+ 3 - 0
apps/wechat/usedvehicle/views.py

@@ -3,6 +3,7 @@
 from rest_framework import generics
 from rest_framework import generics
 from rest_framework.views import APIView
 from rest_framework.views import APIView
 from rest_framework.exceptions import NotFound
 from rest_framework.exceptions import NotFound
+from utils.permission import IsCustomerUser
 
 
 from utils import response_ok
 from utils import response_ok
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
@@ -15,6 +16,7 @@ from .serializers import UsedVehicleSerializer, UsedVehicleDetailSerializer
 
 
 
 
 class UsedVehicleListView(generics.ListAPIView):
 class UsedVehicleListView(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
     queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
     serializer_class = UsedVehicleSerializer
     serializer_class = UsedVehicleSerializer
 
 
@@ -45,6 +47,7 @@ class OptionTypesView(APIView):
         return response_ok(data)
         return response_ok(data)
 
 
 class UsedVehicleDetailView(generics.RetrieveAPIView):
 class UsedVehicleDetailView(generics.RetrieveAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
     queryset = UsedVehicle.objects.filter(delete=False,status=UsedVehicle.STOCK)
     serializer_class = UsedVehicleDetailSerializer
     serializer_class = UsedVehicleDetailSerializer
 
 

+ 4 - 0
apps/wechat/vehicle/views.py

@@ -7,9 +7,11 @@ from utils.exceptions import CustomError
 from .serializers import SeriesSerializer, ModelSerializer, ModelDetailSerializer
 from .serializers import SeriesSerializer, ModelSerializer, ModelDetailSerializer
 from apps.vehicle.filters import SeriesFilter, ModelFilter
 from apps.vehicle.filters import SeriesFilter, ModelFilter
 from apps.vehicle.models import Series, Model
 from apps.vehicle.models import Series, Model
+from utils.permission import IsCustomerUser
 
 
 
 
 class SeriesListViewSet(generics.ListAPIView):
 class SeriesListViewSet(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Series.objects.filter(enabled=True, delete=False)
     queryset = Series.objects.filter(enabled=True, delete=False)
     serializer_class = SeriesSerializer
     serializer_class = SeriesSerializer
 
 
@@ -24,6 +26,7 @@ class SeriesListViewSet(generics.ListAPIView):
 
 
 
 
 class ModelListViewSet(generics.ListAPIView):
 class ModelListViewSet(generics.ListAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Model.objects.filter(enabled=True, delete=False)
     queryset = Model.objects.filter(enabled=True, delete=False)
     serializer_class = ModelSerializer
     serializer_class = ModelSerializer
 
 
@@ -38,6 +41,7 @@ class ModelListViewSet(generics.ListAPIView):
 
 
 
 
 class ModelDetailViewSet(generics.RetrieveAPIView):
 class ModelDetailViewSet(generics.RetrieveAPIView):
+    permission_classes = [IsCustomerUser, ]
     queryset = Model.objects.filter(enabled=True, delete=False)
     queryset = Model.objects.filter(enabled=True, delete=False)
     serializer_class = ModelDetailSerializer
     serializer_class = ModelDetailSerializer