SysMsg.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2019/5/18 10:45
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: SysMsg.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import time
  15. import math
  16. from django.views.generic.base import View
  17. from Model.models import SysMsgModel, FeedBackModel, UserExtendModel
  18. from Object.ResponseObject import ResponseObject
  19. from Object.TokenObject import TokenObject
  20. from Service.ModelService import ModelService
  21. from django.db.models import Q
  22. class SysMsgView(View):
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. operation = kwargs.get('operation', None)
  26. return self.validation(request.GET, operation)
  27. def post(self, request, *args, **kwargs):
  28. request.encoding = 'utf-8'
  29. operation = kwargs.get('operation', None)
  30. return self.validation(request.POST, operation)
  31. def validation(self, request_dict, operation):
  32. response = ResponseObject()
  33. token = request_dict.get('token', None)
  34. tko = TokenObject(token)
  35. if tko.code == 0:
  36. userID = tko.userID
  37. if operation == 'pushFeedBack':
  38. return self.do_push_msg_feed_back(userID, request_dict, response)
  39. elif operation == 'query':
  40. return self.do_query(userID, request_dict, response)
  41. elif operation == 'queryByAdmin':
  42. return self.do_query_by_admin(userID, request_dict, response)
  43. elif operation == 'update':
  44. return self.do_update(userID, request_dict, response)
  45. elif operation == 'delete':
  46. return self.do_delete(userID, request_dict, response)
  47. elif operation == 'deleteByAdmin':
  48. return self.do_delete_by_admin(userID, request_dict, response)
  49. elif operation == 'massPush':
  50. return self.do_mass_push(userID, request_dict, response)
  51. else:
  52. return response.json(414)
  53. else:
  54. return response.json(tko.code)
  55. def do_mass_push(self, userID, request_dict, response):
  56. own_perm = ModelService.check_perm(userID, 10)
  57. if own_perm:
  58. app_list = request_dict.get('app_list', None)
  59. msg = request_dict.get('msg', None)
  60. region = request_dict.get('region', None)
  61. app_list = app_list.split(',')
  62. region = region.split(',')
  63. nowTime = int(time.time())
  64. ue_filter = UserExtendModel.objects.filter()
  65. if app_list:
  66. ue_filter = ue_filter.filter(appBundleId__in=app_list)
  67. if region:
  68. ue_filter.filter(userID__language__in=region)
  69. ue_count = ue_filter.count()
  70. range_count = math.ceil(ue_count / 5000)
  71. for i in range(range_count):
  72. querysetlist = []
  73. userID_list = ue_filter.values_list('userID_id', flat=True)
  74. for urd in userID_list:
  75. querysetlist.append(SysMsgModel(userID_id=urd, msg=msg, addTime=nowTime, updTime=nowTime))
  76. SysMsgModel.objects.bulk_create(querysetlist)
  77. return response.json(0)
  78. else:
  79. return response.json(404)
  80. def do_push_msg_feed_back(self, userID, request_dict, response):
  81. own_perm = ModelService.check_perm(userID, 10)
  82. if own_perm:
  83. fid = request_dict.get('fid', None)
  84. msg = request_dict.get('msg', None)
  85. if all([fid, msg]):
  86. nowTime = int(time.time())
  87. fb_qs = FeedBackModel.objects.filter(id=fid)
  88. fb_list = fb_qs.values('userID_id')
  89. if fb_qs.exists():
  90. create_data = {'userID_id': fb_list[0]['userID_id'], 'msg': msg, 'addTime': nowTime,
  91. 'updTime': nowTime}
  92. try:
  93. SysMsgModel.objects.create(**create_data)
  94. fb_qs.update(status=1)
  95. except Exception as e:
  96. return response.json(500, repr(e))
  97. else:
  98. return response.json(0, {'status': 1, 'updTime': nowTime})
  99. else:
  100. return response.json(173)
  101. else:
  102. return response.json(444, 'fid,msg')
  103. else:
  104. return response.json(404)
  105. def do_query(self, userID, request_dict, response):
  106. page = request_dict.get('page', None)
  107. line = request_dict.get('line', None)
  108. if page and line:
  109. page = int(page)
  110. line = int(line)
  111. sm_qs = SysMsgModel.objects.filter(userID_id=userID)
  112. count = sm_qs.count()
  113. sm_qs = sm_qs[(page - 1) * line:page * line]. \
  114. values('status', 'id', 'msg', 'addTime', 'updTime')
  115. # sm_qs = SysMsgModel.objects.filter(userID_id=userID)[(page - 1) * line:page * line].values('sta')
  116. if sm_qs.exists():
  117. return response.json(0, {'data': list(sm_qs), 'count': count})
  118. else:
  119. return response.json(0, [])
  120. else:
  121. return response.json(444, 'page,line')
  122. def do_query_by_admin(self, userID, request_dict, response):
  123. own_perm = ModelService.check_perm(userID, 30)
  124. if own_perm:
  125. page = request_dict.get('page', None)
  126. line = request_dict.get('line', None)
  127. username = request_dict.get('username', None)
  128. if page and line:
  129. page = int(page)
  130. line = int(line)
  131. sm_qs = SysMsgModel.objects.filter()
  132. if username:
  133. userID_list = ModelService.get_user_list_by_username(username)
  134. sm_qs = sm_qs.filter(userID_id__in=userID_list)
  135. count = sm_qs.count()
  136. sm_qs = sm_qs[(page - 1) * line:page * line]. \
  137. values('status', 'id', 'msg', 'addTime', 'updTime', 'userID__username', 'userID__userEmail',
  138. 'userID__phone')
  139. for k, v in enumerate(sm_qs):
  140. if sm_qs[k]['userID__username'] == '':
  141. sm_qs[k]['userID__username'] = sm_qs[k]['userID__userEmail']
  142. if sm_qs[k]['userID__username'] == '':
  143. sm_qs[k]['userID__username'] = sm_qs[k]['userID__phone']
  144. sm_qs[k].pop('userID__userEmail')
  145. sm_qs[k].pop('userID__phone')
  146. return response.json(0, {'datas': list(sm_qs), 'count': count})
  147. else:
  148. return response.json(444, 'page,line')
  149. else:
  150. return response.json(404)
  151. def do_update(self, userID, request_dict, response):
  152. sid = request_dict.get('sid', None)
  153. if sid:
  154. sm_qs = SysMsgModel.objects.filter(userID_id=userID, id=sid)
  155. if sm_qs.exists():
  156. sm_qs.update(status=1)
  157. return response.json(0)
  158. else:
  159. return response.json(173)
  160. else:
  161. sm_qs = SysMsgModel.objects.filter(userID_id=userID).update(status=1)
  162. return response.json(0)
  163. def do_delete(self, userID, request_dict, response):
  164. sid = request_dict.get('sid', None)
  165. if sid:
  166. sm_qs = SysMsgModel.objects.filter(userID_id=userID, id=sid)
  167. if sm_qs.exists():
  168. sm_qs.delete()
  169. return response.json(0)
  170. else:
  171. return response.json(173)
  172. else:
  173. sm_qs = SysMsgModel.objects.filter(userID_id=userID)
  174. if sm_qs.exists():
  175. sm_qs.delete()
  176. return response.json(0)
  177. else:
  178. return response.json(173)
  179. def do_delete_by_admin(self, userID, request_dict, response):
  180. own_perm = ModelService.check_perm(userID, 10)
  181. if not own_perm:
  182. return response.json(404)
  183. sid = request_dict.get('sid', None)
  184. if sid:
  185. sm_qs = SysMsgModel.objects.filter(id=sid)
  186. if sm_qs.exists():
  187. sm_qs.delete()
  188. return response.json(0)
  189. else:
  190. return response.json(173)
  191. else:
  192. return response.json(444, 'sid')