1
0
forked from erp-dev/erp
Files
erpnew/api_v1/views/user_info.py

78 lines
2.2 KiB
Python

from rest_framework.decorators import api_view, permission_classes
from rest_framework import serializers
from rest_framework.response import Response
from basic_info.models import Employee, Merchant
class MerchantSerializer(serializers.ModelSerializer):
"""商户信息序列化器"""
type_display = serializers.CharField(source='get_type_display', read_only=True)
class Meta:
model = Merchant
fields = [
'id',
'name',
'type',
'type_display',
'area',
'email',
'mobile',
'contact',
'auto_complete_stock_change',
'description',
]
class EmployeeSerializer(serializers.ModelSerializer):
"""员工信息序列化器(嵌套商户信息)"""
job_type_display = serializers.CharField(source='get_job_type_display', read_only=True)
status_display = serializers.CharField(source='get_status_display', read_only=True)
merchant = MerchantSerializer(read_only=True)
class Meta:
model = Employee
fields = [
'id',
'name',
'job_type',
'job_type_display',
'mobile',
'area',
'status',
'status_display',
'description',
'merchant',
]
class UserInfoSerializer(serializers.Serializer):
"""用户信息序列化器(嵌套员工和商户信息)"""
username = serializers.CharField()
email = serializers.EmailField()
is_staff = serializers.BooleanField()
employee = EmployeeSerializer()
@api_view(['GET'])
def user_info(request):
"""
获取当前用户的基本信息(包含员工信息和商户信息)
GET /api/v1/user-info/
返回:
- username: 用户名
- email: 邮箱
- is_staff: 是否为管理员
- employee: 员工信息(包含 merchant 商户信息)
"""
user = request.user
# 验证用户必须登录且有员工身份
if not user.is_authenticated or not hasattr(user, 'employee'):
return Response({'error': 'Unauthorized'}, status=401)
# 使用序列化器序列化数据
serializer = UserInfoSerializer(user)
return Response(serializer.data, status=200)