hujingpei il y a 4 ans
Parent
commit
7279fe2031

+ 2 - 1
apps/account/models.py

@@ -7,7 +7,7 @@ from django.utils import timezone
 from rest_framework.utils import model_meta
 from utils.exceptions import CustomError
 from django.conf import settings
-from apps.agent.models import Store, Agent
+from apps.agent.models import Store, Agent,GeneralAgent
 
 class UserManager(BaseUserManager):
 
@@ -52,6 +52,7 @@ class User(AbstractBaseUser, PermissionsMixin):
     ID_card = models.CharField(max_length=18, verbose_name=u"身份证号", null=True, blank=True)
     address = models.CharField(max_length=100, verbose_name=u"家庭住址", null=True, blank=True)
     tel = models.CharField(max_length=15, verbose_name=u"手机")
+    general_agent = models.ForeignKey(GeneralAgent, verbose_name=u"总代理", null=True, blank=True, on_delete=models.PROTECT)
     agent = models.ForeignKey(Agent, verbose_name=u"代理商", null=True, blank=True, on_delete=models.PROTECT)
     store = models.ForeignKey(Store, verbose_name=u"所属门店", null=True, blank=True, on_delete=models.PROTECT)
     status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"是否在职", default=INSERVICE)

+ 1 - 0
apps/account/serializers.py

@@ -55,6 +55,7 @@ class EmployeeSerializer(serializers.ModelSerializer):
     enable_text = BooleanCharField(source='is_active', read_only=True)
     agent_text = serializers.CharField(source='agent.name', read_only=True)
     store_text = serializers.CharField(source='store.name', read_only=True)
+    general_agent_text = serializers.CharField(source='general_agent.name', read_only=True)
     gender_text = serializers.CharField(source='get_gender_display', read_only=True)
     status_text = serializers.CharField(source='get_status_display', read_only=True)
     check_user_text = serializers.CharField(source='check_user.name', read_only=True)

+ 10 - 1
apps/agent/filters.py

@@ -1,7 +1,16 @@
 # coding=utf-8
 import django_filters
 
-from .models import Agent,Store
+from .models import GeneralAgent,Agent,Store
+
+
+class GeneralAgentFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
+
+    class Meta:
+        model = GeneralAgent
+        fields = '__all__'
+
 
 class AgentFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')

+ 24 - 1
apps/agent/models.py

@@ -3,6 +3,26 @@
 from django.conf import settings
 from django.db import models
 
+
+class GeneralAgent(models.Model):
+    name = models.CharField(verbose_name=u'名称', max_length=50)
+    notes = models.CharField(verbose_name=u'备注', max_length=200, null=True)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'添加人',
+                                    related_name='general_agent_create_user', editable=False, on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
+
+    class Meta:
+        db_table = 'general_agent'
+        verbose_name = u'总代理'
+        ordering = ['-id']
+        default_permissions = ()
+        permissions = [
+            ('view_general_agent', u'查看'),
+            ('add_general_agent', u'添加'),
+            ('delete_general_agent', u'删除'),
+        ]
+
+
 class Agent(models.Model):
     name = models.CharField(verbose_name=u'名称', max_length=50)
     tel = models.CharField(verbose_name=u'电话', max_length=20, null=True)
@@ -12,6 +32,8 @@ class Agent(models.Model):
                                     editable=False,on_delete=models.PROTECT)
     create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
     notes = models.CharField(verbose_name=u'备注', max_length=200, null=True)
+    general_agent = models.ForeignKey(GeneralAgent, verbose_name=u'总代理', related_name='general_agent',
+                                      on_delete=models.PROTECT, editable=False)
 
     class Meta:
         db_table = 'agent'
@@ -24,6 +46,7 @@ class Agent(models.Model):
             ('delete_agent', u'删除'),
         ]
 
+
 class Store(models.Model):
 
     name = models.CharField(verbose_name=u'名称', max_length=50)
@@ -50,4 +73,4 @@ class Store(models.Model):
             ('add_store', u'添加'),
             ('delete_store', u'删除'),
             ('check_store', u'审核'),
-        ]
+        ]

+ 17 - 1
apps/agent/serializers.py

@@ -2,10 +2,25 @@
 import datetime
 from rest_framework import serializers
 from django.conf import settings
-from apps.agent.models import Agent,Store
+from apps.agent.models import GeneralAgent,Agent,Store
 from utils.booleancharfield import BooleanCharField
 
+
+class GeneralAgentSerializer(serializers.ModelSerializer):
+    create_user_text = serializers.CharField(source='create_user.name', read_only=True)
+
+    class Meta:
+        model = GeneralAgent
+        fields = '__all__'
+
+    def create(self, validated_data):
+        validated_data['create_user'] = self.context['request'].user
+        instance = super(GeneralAgentSerializer, self).create(validated_data)
+        return instance
+
+
 class AgentSerializer(serializers.ModelSerializer):
+    general_agent_text = serializers.CharField(source='general_agent.name', read_only=True)
     create_user_text = serializers.CharField(source='create_user.name', read_only=True)
     create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
                                               read_only=True)
@@ -16,6 +31,7 @@ class AgentSerializer(serializers.ModelSerializer):
 
     def create(self, validated_data):
         validated_data['create_user'] = self.context['request'].user
+        validated_data['general_agent'] = self.context['request'].user.general_agent
         instance = super(AgentSerializer, self).create(validated_data)
         return instance
 

+ 1 - 0
apps/agent/urls.py

@@ -7,6 +7,7 @@ urlpatterns = [
 ]
 
 router = SimpleRouter()
+router.register(r'general_agent',GeneralAgentViewSet)
 router.register(r'agent', AgentViewSet)
 router.register(r'store', StoreViewSet)
 urlpatterns += router.urls

+ 29 - 3
apps/agent/views.py

@@ -9,12 +9,38 @@ from django.conf import settings
 from utils import response_ok, response_error
 from utils.exceptions import CustomError
 from apps.log.models import BizLog
-from .models import Agent,Store
-from .serializers import AgentSerializer,StoreSerializer
-from .filters import AgentFilter,StoreFilter
+from .models import GeneralAgent,Agent,Store
+from .serializers import GeneralAgentSerializer,AgentSerializer,StoreSerializer
+from .filters import GeneralAgentFilter,AgentFilter,StoreFilter
 from utils.permission import isLogin, permission_required
 from apps.agent.serializers import AgentComboboxSerializer,StoreComboboxSerializer
 
+
+class GeneralAgentViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = GeneralAgent.objects.filter()
+    serializer_class = GeneralAgentSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = GeneralAgentFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    def perform_create(self, serializer):
+        super(GeneralAgentViewSet, self).perform_create(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+        BizLog.objects.addnew(self.request.user, BizLog.INSERT,
+                              u'添加总代理[%s],id=%d' % (instance.name, instance.id), validated_data)
+
+    def destroy(self, request, *args, **kwargs):
+        instance = self.get_object()
+        BizLog.objects.addnew(self.request.user, BizLog.DELETE,
+                              u'删除总代理[%s],id=%d' % (instance.name, instance.id))
+        super(GeneralAgentViewSet, self).perform_destroy(instance)
+        return response_ok()
+
+
 class AgentViewSet(CustomModelViewSet):
     permission_classes = []
     queryset = Agent.objects.filter()