| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- # -*- 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)))
 
 
  |