123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import random
- from django.db import transaction
- import os
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aiDogProject.settings")
- import django
- django.setup()
- from aiDogApp.models import *
- def generate_random_number(start, end):
- """生成指定范围内的随机数"""
- return random.randint(start, end)
- def generate_dog_id():
- """生成随机9位数字的 d_id"""
- return ''.join(random.choices("0123456789", k=9))
- def getAPuppy(uid,dog_name,sex,breed,birthday,skin,got_time):
- """为用户创建一个新的狗狗并初始化其状态"""
- try:
- # 开始事务,确保更新是原子操作
- with transaction.atomic():
- # 随机生成 d_id
- d_id = generate_dog_id()
- # 随机初始化各属性值
- # 身体性别属性:好奇心、智商、跑步速度、跳跃速度、活泼读、敏捷度、肥胖程度
- curiosity = generate_random_number(30, 70)
- iq = generate_random_number(30, 70)
- runSpeed = generate_random_number(30, 70)
- JumpHeight = generate_random_number(30, 70)
- liveliness = generate_random_number(30, 70)
- agility = generate_random_number(30, 70)
- obesity = generate_random_number(30, 70)
- intimate = generate_random_number(25, 50)
- friendly = generate_random_number(25, 50)
- obedience = generate_random_number(25, 50)
- friendlyToHost = generate_random_number(20, 40)
- friendlyToOtherSSDog = generate_random_number(20, 40)
- friendlyToOtherDSDog = generate_random_number(20, 40)
- friendlyToStranger = generate_random_number(10, 30)
- # 创建一条狗
- new_dog=Doginfo(
- d_id=d_id,
- owner_id=uid,
- dog_name=dog_name,
- sex=sex,
- breed=breed,
- birthday=birthday,
- skin=skin)
- # 创建新狗狗的记录
- # 创建一条狗的状态数据
- new_dog_status=DogStatus(
- d_id=d_id,
- time_lasttime=got_time
- )
- # 创建一条狗的训练数据
- new_dog_training=DogTrainingNew(
- d_id=d_id
- )
- # 身体性别属性:好奇心、智商、跑步速度、跳跃速度、活泼读、敏捷度、肥胖程度
- new_dog_body_attributes = DogBodyAttributes(
- d_id=d_id,
- curiosity=curiosity,
- iq=iq,
- runSpeed=runSpeed,
- JumpHeight=JumpHeight,
- liveliness=liveliness,
- agility=agility,
- obesity=obesity
- )
- # 狗狗和狗主人关系参数
- new_dog_personality_relationship = DogPersonalityRelationship(
- d_id=d_id,
- intimate=intimate,
- friendly=friendly,
- obedience=obedience,
- friendlyToHost=friendlyToHost,
- friendlyToOtherSSDog=friendlyToOtherSSDog,
- friendlyToOtherDSDog=friendlyToOtherDSDog,
- friendlyToStranger=friendlyToStranger
- )
- # 保存狗狗和其属性
- new_dog.save()
- new_dog_status.save()
- new_dog_training.save()
- new_dog_body_attributes.save()
- new_dog_personality_relationship.save()
- # 返回成功状态和数据
- return {
- "status": "success",
- "code": 200,
- "message": "Dog initialized successfully",
- "dog_state": {
- "d_id": d_id,
- "uid": uid,
- "dog_name":dog_name,
- "sex":sex,
- "breed":breed,
- "birthday":birthday,
- "skin":skin,
- "curiosity": curiosity,
- "iq": iq,
- "runSpeed": runSpeed,
- "JumpHeight": JumpHeight,
- "liveliness": liveliness,
- "agility": agility,
- "obesity": obesity,
- "intimate": intimate,
- "friendly": friendly,
- "obedience": obedience,
- "friendlyToHost": friendlyToHost,
- "friendlyToOtherSSDog": friendlyToOtherSSDog,
- "friendlyToOtherDSDog": friendlyToOtherDSDog,
- "friendlyToStranger": friendlyToStranger,
- },
- }
- except Exception as e:
- # 返回失败状态
- return {
- "status": "error",
- "code": 500,
- "message": f"Dog initialization failed: {str(e)}",
- }
|