|
@@ -0,0 +1,123 @@
|
|
|
+# -*- encoding: utf-8 -*-
|
|
|
+"""
|
|
|
+@File : BabyController.py
|
|
|
+@Time : 2024-10-7 14:37:30
|
|
|
+@Author : peng
|
|
|
+@Email :
|
|
|
+@Software: PyCharm
|
|
|
+"""
|
|
|
+
|
|
|
+import json
|
|
|
+import time
|
|
|
+
|
|
|
+from django.core.exceptions import ObjectDoesNotExist
|
|
|
+from django.db import transaction
|
|
|
+from django.db.models import F, Q, Count
|
|
|
+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 Object.ResponseObject import ResponseObject
|
|
|
+from Service.CommonService import CommonService
|
|
|
+
|
|
|
+
|
|
|
+class BabyView(View):
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, request, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, request, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, request, operation):
|
|
|
+ token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
|
|
|
+ if token_code != 0:
|
|
|
+ return response.json(token_code)
|
|
|
+ if operation == 'addOrEdit': # 获取宝宝信息
|
|
|
+ return self.add_or_edit_baby(request, request_dict, user_id, ResponseObject('cn'))
|
|
|
+ elif operation == 'query': # 获取宝宝信息
|
|
|
+ return self.query_baby_info(request_dict, user_id, ResponseObject('cn'))
|
|
|
+ else:
|
|
|
+ return response.json(414)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def add_or_edit_baby(cls, request, request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 添加或修改宝宝信息
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param request: 请求
|
|
|
+ @param user_id: 用户id
|
|
|
+ @request_dict device_id: 设备id
|
|
|
+ @request_dict baby_id: 宝宝id
|
|
|
+ @request_dict nick_name: 昵称
|
|
|
+ @request_dict sex: 性别
|
|
|
+ @request_dict birthday: 生日
|
|
|
+ @request_dict icon: 头像
|
|
|
+ @request_dict is_default: 是否默认
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ device_id = request_dict.get('device_id', None)
|
|
|
+ baby_id = request_dict.get('baby_id', None)
|
|
|
+ nick_name = request_dict.get('nick_name', None)
|
|
|
+ sex = request_dict.get('sex', None)
|
|
|
+ birthday = request_dict.get('birthday', None)
|
|
|
+ icon = request.FILES.get('icon', None)
|
|
|
+ is_default = request_dict.get('is_default', None)
|
|
|
+ if not all([nick_name, sex, birthday, is_default]):
|
|
|
+ return response.json(404)
|
|
|
+ now_time = int(time.time())
|
|
|
+ try:
|
|
|
+ with transaction.atomic():
|
|
|
+ if baby_id:
|
|
|
+ BabyUser.objects.get(id=baby_id, user_id=user_id).update(is_default=is_default, birthday=birthday,
|
|
|
+ nick_name=nick_name, sex=sex,
|
|
|
+ device_id=device_id, updated_time=now_time)
|
|
|
+ else:
|
|
|
+ baby_qs = BabyUser.objects.create(user_id=user_id, is_default=is_default, birthday=birthday,
|
|
|
+ nick_name=nick_name, sex=sex, device_id=device_id,
|
|
|
+ created_time=now_time, updated_time=now_time)
|
|
|
+ baby_id = baby_qs.id
|
|
|
+ if icon:
|
|
|
+ bucket = "ansjerfilemanager"
|
|
|
+ s3_obj = AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
|
|
|
+ s3_url = 'https://{}.s3.{}.amazonaws.com.cn/'.format(bucket, REGION_NAME)
|
|
|
+ icon_path = 'Roomumy/icon_{}.jpg'.format(baby_qs.id)
|
|
|
+ s3_obj.upload_file_obj(
|
|
|
+ bucket,
|
|
|
+ icon_path,
|
|
|
+ icon,
|
|
|
+ {"ContentType": icon.content_type, "ACL": "public-read"},
|
|
|
+ )
|
|
|
+ icon_url = s3_url + icon_path
|
|
|
+ BabyUser.objects.get(id=baby_id, user_id=user_id).update(icon_url=icon_url)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ 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)
|
|
|
+
|
|
|
+ try:
|
|
|
+ baby_qs = BabyUser.objects.filter(user_id=user_id)
|
|
|
+ if baby_id:
|
|
|
+ baby_qs = baby_qs.filter(baby_id=baby_id)
|
|
|
+ count = baby_qs.count()
|
|
|
+ baby_qs = baby_qs.values('nick_name', 'sex', 'birthday', 'icon_url', 'device_id', 'is_default')
|
|
|
+ return response.json(0, {'total': count, 'baby_list': list(baby_qs)})
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|