initialPuppyState.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import random
  2. from django.db import transaction
  3. import os
  4. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aiDogProject.settings")
  5. import django
  6. django.setup()
  7. from aiDogApp.models import *
  8. def generate_random_number(start, end):
  9. """生成指定范围内的随机数"""
  10. return random.randint(start, end)
  11. def generate_dog_id():
  12. """生成随机9位数字的 d_id"""
  13. return ''.join(random.choices("0123456789", k=9))
  14. def getAPuppy(uid,dog_name,sex,breed,birthday,skin,got_time):
  15. """为用户创建一个新的狗狗并初始化其状态"""
  16. try:
  17. # 开始事务,确保更新是原子操作
  18. with transaction.atomic():
  19. # 随机生成 d_id
  20. d_id = generate_dog_id()
  21. # 随机初始化各属性值
  22. # 身体性别属性:好奇心、智商、跑步速度、跳跃速度、活泼读、敏捷度、肥胖程度
  23. curiosity = generate_random_number(30, 70)
  24. iq = generate_random_number(30, 70)
  25. runSpeed = generate_random_number(30, 70)
  26. JumpHeight = generate_random_number(30, 70)
  27. liveliness = generate_random_number(30, 70)
  28. agility = generate_random_number(30, 70)
  29. obesity = generate_random_number(30, 70)
  30. intimate = generate_random_number(25, 50)
  31. friendly = generate_random_number(25, 50)
  32. obedience = generate_random_number(25, 50)
  33. friendlyToHost = generate_random_number(20, 40)
  34. friendlyToOtherSSDog = generate_random_number(20, 40)
  35. friendlyToOtherDSDog = generate_random_number(20, 40)
  36. friendlyToStranger = generate_random_number(10, 30)
  37. # 创建一条狗
  38. new_dog=Doginfo(
  39. d_id=d_id,
  40. owner_id=uid,
  41. dog_name=dog_name,
  42. sex=sex,
  43. breed=breed,
  44. birthday=birthday,
  45. skin=skin)
  46. # 创建新狗狗的记录
  47. # 创建一条狗的状态数据
  48. new_dog_status=DogStatus(
  49. d_id=d_id,
  50. time_lasttime=got_time
  51. )
  52. # 创建一条狗的训练数据
  53. new_dog_training=DogTrainingNew(
  54. d_id=d_id
  55. )
  56. # 身体性别属性:好奇心、智商、跑步速度、跳跃速度、活泼读、敏捷度、肥胖程度
  57. new_dog_body_attributes = DogBodyAttributes(
  58. d_id=d_id,
  59. curiosity=curiosity,
  60. iq=iq,
  61. runSpeed=runSpeed,
  62. JumpHeight=JumpHeight,
  63. liveliness=liveliness,
  64. agility=agility,
  65. obesity=obesity
  66. )
  67. # 狗狗和狗主人关系参数
  68. new_dog_personality_relationship = DogPersonalityRelationship(
  69. d_id=d_id,
  70. intimate=intimate,
  71. friendly=friendly,
  72. obedience=obedience,
  73. friendlyToHost=friendlyToHost,
  74. friendlyToOtherSSDog=friendlyToOtherSSDog,
  75. friendlyToOtherDSDog=friendlyToOtherDSDog,
  76. friendlyToStranger=friendlyToStranger
  77. )
  78. # 保存狗狗和其属性
  79. new_dog.save()
  80. new_dog_status.save()
  81. new_dog_training.save()
  82. new_dog_body_attributes.save()
  83. new_dog_personality_relationship.save()
  84. # 返回成功状态和数据
  85. return {
  86. "status": "success",
  87. "code": 200,
  88. "message": "Dog initialized successfully",
  89. "dog_state": {
  90. "d_id": d_id,
  91. "uid": uid,
  92. "dog_name":dog_name,
  93. "sex":sex,
  94. "breed":breed,
  95. "birthday":birthday,
  96. "skin":skin,
  97. "curiosity": curiosity,
  98. "iq": iq,
  99. "runSpeed": runSpeed,
  100. "JumpHeight": JumpHeight,
  101. "liveliness": liveliness,
  102. "agility": agility,
  103. "obesity": obesity,
  104. "intimate": intimate,
  105. "friendly": friendly,
  106. "obedience": obedience,
  107. "friendlyToHost": friendlyToHost,
  108. "friendlyToOtherSSDog": friendlyToOtherSSDog,
  109. "friendlyToOtherDSDog": friendlyToOtherDSDog,
  110. "friendlyToStranger": friendlyToStranger,
  111. },
  112. }
  113. except Exception as e:
  114. # 返回失败状态
  115. return {
  116. "status": "error",
  117. "code": 500,
  118. "message": f"Dog initialization failed: {str(e)}",
  119. }