FeedBack.py 4.5 KB

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