FeedBack.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import time
  2. import json
  3. import oss2
  4. from django.views.generic.base import View
  5. from var_dump import var_dump
  6. from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
  7. from Model.models import FeedBackModel, StatResModel
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. class FeedBackView(View):
  12. def get(self, request, *args, **kwargs):
  13. request.encoding = 'utf-8'
  14. operation = kwargs.get('operation', None)
  15. return self.validation(request.GET, operation)
  16. def post(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation', None)
  19. return self.validation(request.POST, operation)
  20. def validation(self, request_dict, operation):
  21. response = ResponseObject()
  22. token = request_dict.get('token', None)
  23. tko = TokenObject(token)
  24. if tko.code == 0:
  25. userID = tko.userID
  26. if operation == 'add':
  27. return self.do_add(userID, request_dict, response)
  28. elif operation == 'getUploadUrl':
  29. return self.do_get_upload_url(request_dict, response)
  30. elif operation == 'query':
  31. return self.do_query(userID, request_dict, response)
  32. elif operation == 'delete':
  33. return self.do_delete(userID, request_dict, response)
  34. else:
  35. return response.json(414)
  36. else:
  37. return response.json(tko.code)
  38. def do_query(self, userID, request_dict, response):
  39. page = request_dict.get('page', None)
  40. line = request_dict.get('line', None)
  41. if page and line:
  42. page = int(page)
  43. line = int(line)
  44. else:
  45. return response.json(444, 'page,line')
  46. fb_qs = FeedBackModel.objects.filter(userID_id=userID)[(page - 1) * line:page * line].values('id', 'status',
  47. 'content',
  48. 'addTime',
  49. 'updTime',
  50. 'FS__name')
  51. res = {}
  52. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  53. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  54. for fb in fb_qs:
  55. if fb['id'] in res:
  56. if fb['FS__name']:
  57. img_url = bucket.sign_url('GET', fb['FS__name'], 600)
  58. res[fb['id']]['img_url'].append(img_url)
  59. else:
  60. print(fb['FS__name'])
  61. if fb['FS__name']:
  62. img_url = bucket.sign_url('GET', fb['FS__name'], 600)
  63. fb['img_url'] = []
  64. fb['img_url'].append(img_url)
  65. res[fb['id']] = fb
  66. # print(fb_qs.FS_set.all())
  67. return response.json(0, res)
  68. def do_add(self, userID, request_dict, response):
  69. nowTime = int(time.time())
  70. content = request_dict.get('content', None)
  71. res_1 = request_dict.get('res_1', None)
  72. res_2 = request_dict.get('res_2', None)
  73. res_3 = request_dict.get('res_3', None)
  74. # res_list = []
  75. try:
  76. fb = FeedBackModel()
  77. fb.addTime = nowTime
  78. fb.updTime = nowTime
  79. fb.content = content
  80. fb.userID_id = userID
  81. fb.save()
  82. if res_1:
  83. fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_1))
  84. if res_2:
  85. fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_2))
  86. if res_3:
  87. fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_3))
  88. if not res_1 and not res_2 and not res_3:
  89. fb.delete()
  90. return response.json(444, 'res_1,2,3')
  91. except Exception as e:
  92. print(repr(e))
  93. # fb.delete()
  94. return response.json(500, repr(e))
  95. else:
  96. return response.json(0)
  97. def do_get_upload_url(self, request_dict, response):
  98. uploadType = request_dict.get('uploadType', None)
  99. uploadType = json.loads(uploadType)
  100. if len(uploadType):
  101. res = []
  102. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  103. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  104. for upType in uploadType:
  105. name = CommonService.createOrderID()
  106. obj = str(name) + '.' + upType
  107. url = bucket.sign_url('PUT', obj, 7200)
  108. res.append({'put_url': url, 'res_name': obj})
  109. return response.json(0, res)
  110. else:
  111. return response.json(444, 'uploadType')
  112. def do_delete(self, userID, request_dict, response):
  113. id = request_dict.get('id', None)
  114. try:
  115. print('==========')
  116. fb_qs = FeedBackModel.objects.get(userID_id=userID, id=id)
  117. from var_dump import var_dump
  118. sss = fb_qs.FS.all()
  119. var_dump(sss)
  120. # fb_qs.delete()
  121. except Exception as e:
  122. return response.json(500, repr(e))
  123. else:
  124. return response.json(0)