CloudPhotoController.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : CronCloudPhotoController.py
  4. @Time : 2022/11/3 10:16
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import logging
  10. import time
  11. from django.db import transaction
  12. from django.views import View
  13. from Model.models import DeviceCloudPhotoInfo, Device_Info, CloudPhotoBGM
  14. from Object.ResponseObject import ResponseObject
  15. from Object.TokenObject import TokenObject
  16. LOGGER = logging.getLogger('info')
  17. class CronCloudPhotoView(View):
  18. def get(self, request, *args, **kwargs):
  19. request.encoding = 'utf-8'
  20. operation = kwargs.get('operation')
  21. return self.validation(request.GET, request, operation)
  22. def post(self, request, *args, **kwargs):
  23. request.encoding = 'utf-8'
  24. operation = kwargs.get('operation')
  25. return self.validation(request.POST, request, operation)
  26. def validation(self, request_dict, request, operation):
  27. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  28. lang = request_dict.get('lang', token.lang)
  29. response = ResponseObject(lang)
  30. if token.code != 0:
  31. return response.json(token.code)
  32. user_id = token.userID
  33. if operation == 'get-photo':
  34. return self.save_cloud_photo(user_id, request_dict, response)
  35. else:
  36. return response.json(404)
  37. @classmethod
  38. def save_cloud_photo(cls, user_id, request_dict, response):
  39. """
  40. 保存云相册
  41. """
  42. try:
  43. with transaction.atomic():
  44. status = request_dict.get('status', None)
  45. uid = request_dict.get('uid', None)
  46. if not all([status, uid, user_id]):
  47. return response(444)
  48. device_info_qs = Device_Info.objects.filter(vodPrimaryUserID=user_id, uid=uid).values('primaryUserID')
  49. if not device_info_qs.exists():
  50. return response.json(14)
  51. master_user_id = device_info_qs[0]['primaryUserID']
  52. if master_user_id != '' and master_user_id != user_id:
  53. return response.json(12)
  54. now_time = int(time.time())
  55. cloud_photo_qs = DeviceCloudPhotoInfo.objects.filter(uid=uid)
  56. if not cloud_photo_qs.exists():
  57. data = {'status': status, 'user_id': user_id, 'uid': uid, 'created_time': now_time,
  58. 'updated_time': now_time}
  59. DeviceCloudPhotoInfo.objects.create(**data)
  60. return response.json(0)
  61. cloud_photo_qs.update(status=status, updated_time=now_time)
  62. return response.json(0)
  63. except Exception as e:
  64. LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  65. return response.json(500)
  66. @classmethod
  67. def get_bgm_list(cls, request_dict, response):
  68. """
  69. 获取背景音乐列表
  70. """
  71. photo_bgm = CloudPhotoBGM.objects.filter(is_show=1).values('name', 'link').order_by('sort')
  72. if not photo_bgm.exists():
  73. return response.json(0, [])
  74. return response.json(0, list(photo_bgm))