first commit
This commit is contained in:
commit
a1642c8dc4
16 changed files with 497 additions and 0 deletions
0
run_order/__init__.py
Normal file
0
run_order/__init__.py
Normal file
18
run_order/admin.py
Normal file
18
run_order/admin.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from .models import RunOrder, AnonymousUser, MowerVersion
|
||||
|
||||
|
||||
@admin.register(RunOrder)
|
||||
class RunOrderAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
|
||||
@admin.register(AnonymousUser)
|
||||
class AnonymousUserAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
|
||||
@admin.register(MowerVersion)
|
||||
class MowerVersionAdmin(admin.ModelAdmin):
|
||||
pass
|
41
run_order/api.py
Normal file
41
run_order/api.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
from ninja import Schema
|
||||
from ninja_extra import NinjaExtraAPI, api_controller, route
|
||||
from ninja_extra.exceptions import APIException
|
||||
|
||||
from uuid import UUID
|
||||
|
||||
from .models import RunOrder, MowerVersion, AnonymousUser
|
||||
|
||||
|
||||
class RunOrderSchema(Schema):
|
||||
version: str
|
||||
uuid: UUID
|
||||
level: int
|
||||
skill: str
|
||||
grandet: bool
|
||||
|
||||
|
||||
@api_controller()
|
||||
class RunOrderAPI:
|
||||
@route.post("/run-order")
|
||||
def run_order(self, data: RunOrderSchema):
|
||||
if data.level < 1 or data.level > 3:
|
||||
raise APIException("贸易站等级错误")
|
||||
if data.skill not in RunOrder.SKILL_CHOICES:
|
||||
raise APIException("跑单技能错误")
|
||||
if data.level != 3 and data.skill == "t":
|
||||
raise APIException("跑单技能与贸易站等级不匹配")
|
||||
version = MowerVersion.objects.get_or_create(version=data.version)[0]
|
||||
anonymous = AnonymousUser.objects.get_or_create(uuid=data.uuid)[0]
|
||||
run_order_data = RunOrder.objects.create(
|
||||
version=version,
|
||||
uuid=anonymous,
|
||||
facility_level=data.level,
|
||||
skill=data.skill,
|
||||
grandet_mode=data.grandet,
|
||||
)
|
||||
return run_order_data.id
|
||||
|
||||
|
||||
api = NinjaExtraAPI()
|
||||
api.register_controllers(RunOrderAPI)
|
6
run_order/apps.py
Normal file
6
run_order/apps.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class RunOrderConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'run_order'
|
41
run_order/migrations/0001_initial.py
Normal file
41
run_order/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
# Generated by Django 5.0 on 2023-12-13 02:55
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AnonymousUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('uuid', models.UUIDField(unique=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MowerVersion',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('version', models.CharField(max_length=40, unique=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RunOrder',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('time', models.DateTimeField(auto_now_add=True)),
|
||||
('facility_level', models.IntegerField()),
|
||||
('skill', models.CharField(choices=[('p', '但书'), ('t', '龙舌兰')], max_length=1)),
|
||||
('grandet_mode', models.BooleanField()),
|
||||
('uuid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='run_order.anonymoususer')),
|
||||
('version', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='run_order.mowerversion')),
|
||||
],
|
||||
),
|
||||
]
|
0
run_order/migrations/__init__.py
Normal file
0
run_order/migrations/__init__.py
Normal file
19
run_order/models.py
Normal file
19
run_order/models.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from django.db import models
|
||||
|
||||
|
||||
class MowerVersion(models.Model):
|
||||
version = models.CharField(max_length=40, unique=True)
|
||||
|
||||
|
||||
class AnonymousUser(models.Model):
|
||||
uuid = models.UUIDField(unique=True)
|
||||
|
||||
|
||||
class RunOrder(models.Model):
|
||||
SKILL_CHOICES = {"p": "但书", "t": "龙舌兰"}
|
||||
version = models.ForeignKey(MowerVersion, on_delete=models.CASCADE)
|
||||
uuid = models.ForeignKey(AnonymousUser, on_delete=models.CASCADE)
|
||||
time = models.DateTimeField(auto_now_add=True)
|
||||
facility_level = models.IntegerField()
|
||||
skill = models.CharField(max_length=1, choices=SKILL_CHOICES)
|
||||
grandet_mode = models.BooleanField()
|
3
run_order/tests.py
Normal file
3
run_order/tests.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
3
run_order/views.py
Normal file
3
run_order/views.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
Loading…
Add table
Add a link
Reference in a new issue