Jelajahi Sumber

Roomumy 查询婴儿信息

linhaohong 5 bulan lalu
induk
melakukan
d40c8afc92
2 mengubah file dengan 59 tambahan dan 10 penghapusan
  1. 38 9
      Roomumy/Controller/BabyController.py
  2. 21 1
      Roomumy/models.py

+ 38 - 9
Roomumy/Controller/BabyController.py

@@ -16,7 +16,7 @@ from django.views import View
 from Ansjer.cn_config.config_formal import SECRET_ACCESS_KEY, ACCESS_KEY_ID, REGION_NAME
 
 from Object.AWS.AmazonS3Util import AmazonS3Util
-from Roomumy.models import BabyUser
+from Roomumy.models import BabyUser, BabyGrowthStandard
 from Object.ResponseObject import ResponseObject
 from Service.CommonService import CommonService
 
@@ -112,11 +112,6 @@ class BabyView(View):
     def query_baby_info(cls, request_dict, user_id, response):
         """
         获取宝宝信息
-        @param request_dict: 请求参数
-        @param user_id: 用户id
-        @request_dict baby_id: 宝宝id
-        @param response: 响应对象
-        @return: response
         """
         baby_id = request_dict.get('baby_id', None)
 
@@ -125,10 +120,44 @@ class BabyView(View):
             if baby_id:
                 baby_qs = baby_qs.filter(id=baby_id)
             count = baby_qs.count()
-            baby_qs = baby_qs.values('id', 'nick_name', 'sex', 'birthday', 'icon_url', 'device_id', 'is_default')
-            return response.json(0, {'total': count, 'baby_list': list(baby_qs)})
+            baby_list = list(
+                baby_qs.values('id', 'nick_name', 'sex', 'birthday', 'icon_url', 'device_id', 'is_default'))
+
+            current_time = int(time.time())  # 获取当前时间戳
+
+            for baby in baby_list:
+                birthday = baby.get('birthday', 0)
+                baby['growth_standard'] = None  # 初始化字段
+
+                # 仅处理有效生日数据
+                if birthday > 0:
+                    age_days = (current_time - birthday) // 86400  # 计算年龄天数
+
+                    # 查询成长标准数据
+                    standards = BabyGrowthStandard.objects.filter(
+                        age_min__lte=age_days,
+                        age_max__gte=age_days,
+                        gender=baby.get('sex', 0)  # 默认性别为女
+                    ).first()  # 直接获取第一条匹配记录
+
+                    if standards:
+                        baby['growth_standard'] = {
+                            'height': {'min': standards.height_min, 'max': standards.height_max},
+                            'weight': {'min': standards.weight_min, 'max': standards.weight_max},
+                            'head_circumference': {
+                                'min': standards.head_circumference_min,
+                                'max': standards.head_circumference_max
+                            }
+                        }
+                    else:
+                        baby['growth_standard'] = {
+                            'height': {'min': None, 'max': None},
+                            'weight': {'min': None, 'max': None},
+                            'head_circumference': {'min': None, 'max': None}
+                        }
+            return response.json(0, {'total': count, 'baby_list': baby_list})
         except Exception as e:
-            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, f'error_line:{e.__traceback__.tb_lineno}, error_msg:{repr(e)}')
 
     @classmethod
     def delete_baby(cls, request_dict, user_id, response):

+ 21 - 1
Roomumy/models.py

@@ -58,6 +58,7 @@ class FeedDiary(models.Model):
 class AlbumTitle(models.Model):
     id = models.AutoField(primary_key=True)
     album_title = models.TextField(blank=True, default='', verbose_name='相册标题')
+    lang = models.CharField(default='', max_length=10, verbose_name='语言')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')
 
@@ -70,7 +71,7 @@ class AlbumTitle(models.Model):
 
 class TimeAlbum(models.Model):
     id = models.AutoField(primary_key=True)
-    uid = models.CharField(default='', max_length=32, verbose_name='设备uid', db_index=True)
+    device_id = models.CharField(default='', max_length=32, verbose_name='关联设备',  db_index=True)
     user_id = models.CharField(default='', max_length=32, verbose_name='关联用户id', db_index=True)
     album_date = models.IntegerField(default=0, verbose_name='相册日期', db_index=True)
     album_title = models.TextField(default=0, verbose_name='相册标题')
@@ -117,3 +118,22 @@ class AlbumMedia(models.Model):
         verbose_name = "相册媒体表"
         verbose_name_plural = verbose_name
         app_label = 'Roomumy'
+
+class BabyGrowthStandard(models.Model):
+    age_min = models.IntegerField(verbose_name="最小年龄(天)", help_text="单位:天")
+    age_max = models.IntegerField(verbose_name="最大年龄(天)", help_text="单位:天")
+    gender = models.IntegerField(default=0, verbose_name="性别")
+    height_min = models.FloatField(verbose_name="最小身高 (cm)")
+    height_max = models.FloatField(verbose_name="最大身高 (cm)")
+    weight_min = models.FloatField(verbose_name="最小体重 (kg)")
+    weight_max = models.FloatField(verbose_name="最大体重 (kg)")
+    head_circumference_min = models.FloatField(verbose_name="最小头围 (cm)")
+    head_circumference_max = models.FloatField(verbose_name="最大头围 (cm)")
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+    updated_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = "baby_growth_standard"
+        verbose_name = "婴儿成长标准表"
+        verbose_name_plural = verbose_name
+        app_label = 'Roomumy'