feat: update device interaction module
All checks were successful
Build and Deploy LTY / build-and-deploy (push) Successful in 54m40s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
pmc 2026-03-30 10:57:12 +08:00
parent a8add9dc6e
commit 7d05339e05
3 changed files with 25 additions and 22 deletions

View File

@ -171,7 +171,8 @@
"Bash(curl -s http://localhost:8000/api/card/category/dance/)", "Bash(curl -s http://localhost:8000/api/card/category/dance/)",
"Bash(C:/python/python.exe -X utf8 -c \"import sys,json; sys.stdout.reconfigure\\(encoding=''''utf-8''''\\); d=json.load\\(sys.stdin\\); [print\\(f''''ID={i[\"\"id\"\"]} status={i.get\\(\"\"status\"\",\"\"?\"\"\\)} name={i[\"\"name\"\"]}''''\\) for i in d.get\\(''''data'''',d\\).get\\(''''results'''',d.get\\(''''data'''',[]\\)\\)]\")", "Bash(C:/python/python.exe -X utf8 -c \"import sys,json; sys.stdout.reconfigure\\(encoding=''''utf-8''''\\); d=json.load\\(sys.stdin\\); [print\\(f''''ID={i[\"\"id\"\"]} status={i.get\\(\"\"status\"\",\"\"?\"\"\\)} name={i[\"\"name\"\"]}''''\\) for i in d.get\\(''''data'''',d\\).get\\(''''results'''',d.get\\(''''data'''',[]\\)\\)]\")",
"Bash(ls c:/Users/admin/Desktop/Lila-Server/qy_lty/settings*)", "Bash(ls c:/Users/admin/Desktop/Lila-Server/qy_lty/settings*)",
"Bash(python manage.py makemigrations card)" "Bash(python manage.py makemigrations card)",
"Bash(python manage.py runserver)"
], ],
"additionalDirectories": [ "additionalDirectories": [
"C:\\Users\\admin\\.claude" "C:\\Users\\admin\\.claude"

View File

@ -112,17 +112,7 @@ class DeviceBindSerializer(serializers.Serializer):
def validate_mac_address(self, value): def validate_mac_address(self, value):
try: try:
device = Device.objects.get(mac_address=value) Device.objects.get(mac_address=value)
# 检查设备是否已被激活
if not device.is_active:
device.is_active = True
device.activated_at = timezone.now()
device.save()
except Device.DoesNotExist: except Device.DoesNotExist:
raise serializers.ValidationError("设备不存在") raise serializers.ValidationError("设备不存在")
# 检查设备是否已被其他用户绑定
if UserDevice.objects.filter(device=device).exists():
raise serializers.ValidationError("设备已被其他用户绑定")
return value return value

View File

@ -670,6 +670,24 @@ class UserDeviceViewSet(viewsets.ModelViewSet):
# 获取设备 # 获取设备
device = Device.objects.get(mac_address=mac_address) device = Device.objects.get(mac_address=mac_address)
# 检查是否已被当前用户绑定
existing = UserDevice.objects.filter(device=device, user=request.user).first()
if existing:
return success_response(
data=UserDeviceSerializer(existing).data,
message='设备已绑定'
)
# 检查是否已被其他用户绑定
if UserDevice.objects.filter(device=device).exists():
return error_response(message='设备已被其他用户绑定', code=status.HTTP_400_BAD_REQUEST)
# 激活设备
if not device.is_active:
device.is_active = True
device.activated_at = timezone.now()
device.save()
# 创建用户设备关联 # 创建用户设备关联
user_device = UserDevice( user_device = UserDevice(
user=request.user, user=request.user,
@ -679,12 +697,6 @@ class UserDeviceViewSet(viewsets.ModelViewSet):
) )
user_device.save() user_device.save()
# 更新设备状态
if not device.is_active:
device.is_active = True
device.activated_at = timezone.now()
device.save()
# 返回绑定结果 # 返回绑定结果
return success_response( return success_response(
data=UserDeviceSerializer(user_device).data, data=UserDeviceSerializer(user_device).data,