42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
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)
|