diff --git a/apps/carbon/migrations/0004_enterprise_is_qualified_alter_enterprise_belong_dept.py b/apps/carbon/migrations/0004_enterprise_is_qualified_alter_enterprise_belong_dept.py new file mode 100644 index 0000000..74ce8bd --- /dev/null +++ b/apps/carbon/migrations/0004_enterprise_is_qualified_alter_enterprise_belong_dept.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.27 on 2026-03-09 06:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0007_alter_dept_create_by_alter_dept_update_by_and_more'), + ('carbon', '0003_enterprise'), + ] + + operations = [ + migrations.AddField( + model_name='enterprise', + name='is_qualified', + field=models.BooleanField(default=False, verbose_name='资格审核通过'), + ), + migrations.AlterField( + model_name='enterprise', + name='belong_dept', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='enterprise_belong_dept', to='system.dept', verbose_name='所属部门'), + ), + ] diff --git a/apps/carbon/models.py b/apps/carbon/models.py index 3976343..8fbeeeb 100644 --- a/apps/carbon/models.py +++ b/apps/carbon/models.py @@ -68,6 +68,10 @@ class Enterprise(CommonBDModel): industry = models.CharField("所属行业", max_length=100, blank=True, null=True) business_status = models.CharField("经营状态", max_length=50, blank=True, null=True) registration_authority = models.CharField("登记机关", max_length=200, blank=True, null=True) + is_qualified = models.BooleanField("资格审核通过", default=False) + belong_dept = models.OneToOneField( + 'system.dept', null=True, blank=True, on_delete=models.SET_NULL, + verbose_name='所属部门', related_name='enterprise_belong_dept') class Meta: verbose_name = "企业信息" diff --git a/apps/carbon/serializers.py b/apps/carbon/serializers.py index 50c6ad6..66fa08f 100644 --- a/apps/carbon/serializers.py +++ b/apps/carbon/serializers.py @@ -1,5 +1,5 @@ from apps.utils.serializers import CustomModelSerializer -from .models import Work +from .models import Work, Enterprise from rest_framework import serializers from apps.system.serializers import FileSerializer @@ -37,4 +37,10 @@ class WorkDqCalSerializer(CustomModelSerializer): class WorkDhCalSerializer(CustomModelSerializer): class Meta: model = Work - fields = ["dh_file1", "dh_file2", "dh_file3", "dh_file4", "dh_file5", "dh_file6"] \ No newline at end of file + fields = ["dh_file1", "dh_file2", "dh_file3", "dh_file4", "dh_file5", "dh_file6"] + + +class EnterpriseSerializer(CustomModelSerializer): + class Meta: + model = Enterprise + fields = "__all__" \ No newline at end of file diff --git a/apps/carbon/urls.py b/apps/carbon/urls.py index 42007c5..7ed4a20 100644 --- a/apps/carbon/urls.py +++ b/apps/carbon/urls.py @@ -1,4 +1,4 @@ -from .views import WorkViewSet +from .views import WorkViewSet, EnterpriseViewSet from django.urls import path, include from rest_framework.routers import DefaultRouter @@ -7,6 +7,7 @@ HTML_BASE_URL = 'carbon/' router = DefaultRouter() router.register('work', WorkViewSet, basename='carbon_work') +router.register('enterprise', EnterpriseViewSet, basename='carbon_enterprise') urlpatterns = [ path(API_BASE_URL, include(router.urls)), ] diff --git a/apps/carbon/views.py b/apps/carbon/views.py index d487642..1bd4534 100644 --- a/apps/carbon/views.py +++ b/apps/carbon/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render -from .models import Work, Fingerprint -from .serializers import WorkSerializer, WorkCreateSerializer, WorkDqCalSerializer, WorkDhCalSerializer +from .models import Work, Fingerprint, Enterprise +from .serializers import WorkSerializer, WorkCreateSerializer, WorkDqCalSerializer, WorkDhCalSerializer, EnterpriseSerializer from apps.utils.viewsets import CustomModelViewSet from rest_framework.decorators import action import os @@ -324,6 +324,24 @@ class WorkViewSet(CustomModelViewSet): pass return Response({"total_score": score}) + + +class EnterpriseViewSet(CustomModelViewSet): + queryset = Enterprise.objects.all() + serializer_class = EnterpriseSerializer + + @action(methods=['get'], detail=False, perms_map={'get': '*'}) + def my(self, request, *args, **kwargs): + user = self.request.user + if not user.belong_dept: + raise ParseError("用户未关联部门") + + try: + enterprise = Enterprise.objects.get(belong_dept=user.belong_dept) + serializer = self.get_serializer(enterprise) + return Response(serializer.data) + except Enterprise.DoesNotExist: + raise ParseError("未找到关联的企业信息")