AsImg.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: langer
  7. @software: PyCharm
  8. @DATE: 2019/6/3 17:29
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: User.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import json
  15. import time
  16. from django.views.generic import TemplateView
  17. from model.models import AsImgModel, SysSetModel
  18. from object.ResponseObject import ResponseObject
  19. from object.TokenObject import TokenObject
  20. from service.CommonService import CommonService
  21. from object.SesClassObject import SesClassObject
  22. from object.RedisObject import RedisObject
  23. class addView(TemplateView):
  24. def post(self, request, *args, **kwargs):
  25. request.encoding = 'utf-8'
  26. request_dict = json.loads(request.body.decode('utf-8'))
  27. return self.validate(request_dict)
  28. def get(self, request, *args, **kwargs):
  29. request.encoding = 'utf-8'
  30. request_dict = request.GET
  31. return self.validate(request_dict)
  32. def validate(self, request_dict):
  33. response = ResponseObject()
  34. token = request_dict.get('token', None)
  35. url = request_dict.get('url', None)
  36. asin = request_dict.get('asin', None)
  37. tko = TokenObject(token)
  38. if tko.code == 0:
  39. img_md5 = CommonService.get_remote_md5_sum(url=url)
  40. nowTime = int(time.time())
  41. create_dict = {
  42. 'asin': asin,
  43. 'md5': img_md5,
  44. 'url': url,
  45. 'addTime': nowTime,
  46. 'updTime': nowTime
  47. }
  48. AsImgModel.objects.create(**create_dict)
  49. return response.json(0)
  50. else:
  51. return response.json(tko.code)
  52. class queryView(TemplateView):
  53. def post(self, request, *args, **kwargs):
  54. request.encoding = 'utf-8'
  55. request_dict = json.loads(request.body.decode('utf-8'))
  56. return self.validate(request_dict)
  57. def get(self, request, *args, **kwargs):
  58. request.encoding = 'utf-8'
  59. request_dict = request.GET
  60. return self.validate(request_dict)
  61. def validate(self, request_dict):
  62. response = ResponseObject()
  63. token = request_dict.get('token', None)
  64. searchAsin = request_dict.get('searchAsin', None)
  65. page = int(request_dict.get('page', None))
  66. line = int(request_dict.get('line', None))
  67. tko = TokenObject(token)
  68. if tko.code == 0:
  69. userID = tko.userID
  70. ai_qs = AsImgModel.objects.filter()
  71. if searchAsin:
  72. ai_qs = ai_qs.filter(asin__contains=searchAsin)
  73. count = ai_qs.count()
  74. ai_qs = ai_qs[(page - 1) * line:page * line]
  75. if ai_qs.exists():
  76. res = list(ai_qs.values('id', 'addTime', 'updTime', 'asin', 'md5', 'url'))
  77. return response.json(0, res, extra={'count': count})
  78. else:
  79. return response.json(0)
  80. else:
  81. return response.json(tko.code)
  82. class updateView(TemplateView):
  83. def post(self, request, *args, **kwargs):
  84. request.encoding = 'utf-8'
  85. request_dict = json.loads(request.body.decode('utf-8'))
  86. return self.validate(request_dict)
  87. def get(self, request, *args, **kwargs):
  88. request.encoding = 'utf-8'
  89. request_dict = request.GET
  90. return self.validate(request_dict)
  91. def validate(self, request_dict):
  92. response = ResponseObject()
  93. token = request_dict.get('token', None)
  94. id = request_dict.get('id', None)
  95. asin = request_dict.get('asin', None)
  96. url = request_dict.get('url', None)
  97. nowTime = int(time.time())
  98. tko = TokenObject(token)
  99. if tko.code == 0:
  100. ai_qs = AsImgModel.objects.filter(id=id)
  101. update_dict = {'updTime': nowTime}
  102. if asin:
  103. update_dict['asin'] = asin
  104. if url:
  105. update_dict['url'] = url
  106. img_md5 = CommonService.get_remote_md5_sum(url=url)
  107. update_dict['md5'] = img_md5
  108. ai_qs.update(**update_dict)
  109. return response.json(0)
  110. else:
  111. return response.json(tko.code)
  112. class deleteView(TemplateView):
  113. def post(self, request, *args, **kwargs):
  114. request.encoding = 'utf-8'
  115. request_dict = json.loads(request.body.decode('utf-8'))
  116. return self.validate(request_dict)
  117. def get(self, request, *args, **kwargs):
  118. request.encoding = 'utf-8'
  119. request_dict = request.GET
  120. return self.validate(request_dict)
  121. def validate(self, request_dict):
  122. response = ResponseObject()
  123. token = request_dict.get('token', None)
  124. tko = TokenObject(token)
  125. if tko.code == 0:
  126. id = request_dict.get('id', None)
  127. if id:
  128. AsImgModel.objects.filter(id=id).delete()
  129. return response.json(0)
  130. else:
  131. return response.json(0)
  132. else:
  133. return response.json(tko.code)
  134. #
  135. class cycleImgView(TemplateView):
  136. def post(self, request, *args, **kwargs):
  137. request.encoding = 'utf-8'
  138. request_dict = json.loads(request.body.decode('utf-8'))
  139. return self.validate(request_dict)
  140. def get(self, request, *args, **kwargs):
  141. request.encoding = 'utf-8'
  142. request_dict = request.GET
  143. return self.validate(request_dict)
  144. def validate(self, request_dict):
  145. response = ResponseObject()
  146. # token = request_dict.get('token', None)
  147. # tko = TokenObject(token)
  148. as_qs = AsImgModel.objects.filter().values('url', 'md5', 'asin')
  149. as_list = list(as_qs)
  150. key_list = ['asimgEmail', 'asinterval']
  151. sys_qs = SysSetModel.objects.filter(key__in=key_list).values('key', 'val')
  152. sys_dict = {}
  153. for i in sys_qs:
  154. sys_dict[i['key']] = i['val']
  155. asimgEmail = sys_dict['asimgEmail']
  156. asinterval = sys_dict['asinterval']
  157. redisObj = RedisObject()
  158. redis_asinterval = redisObj.get_data(key='asinterval')
  159. if redis_asinterval:
  160. return response.json(0, '时候未到呢')
  161. else:
  162. redisObj.set_data(key='asinterval', val=1, expire=int(asinterval))
  163. # 校验出的asin码列表
  164. err_asin_list = []
  165. for a in as_qs:
  166. try:
  167. md5 = CommonService.get_remote_md5_sum(a['url'])
  168. except Exception as e:
  169. print(repr(e))
  170. err_asin_list.append(a['asin'])
  171. else:
  172. if md5 == a['md5']:
  173. pass
  174. else:
  175. err_asin_list.append(a['asin'])
  176. # 发送邮件
  177. # from var_dump import var_dump
  178. # var_dump(err_asin_list)
  179. if len(err_asin_list) > 0:
  180. sesObj = SesClassObject()
  181. sesObj.send_email(send_address_list=[asimgEmail], subject='发现亚马逊产品图片丢失', body=','.join(err_asin_list))
  182. return response.json(0, {'send_count': len(err_asin_list)})
  183. return response.json(0)