SysMsg.py 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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, SysMassModel
  18. from Object.ResponseObject import ResponseObject
  19. from Object.TokenObject import TokenObject
  20. from Service.ModelService import ModelService
  21. class SysMsgView(View):
  22. def get(self, request, *args, **kwargs):
  23. request.encoding = 'utf-8'
  24. operation = kwargs.get('operation', None)
  25. return self.validation(request.GET, operation)
  26. def post(self, request, *args, **kwargs):
  27. request.encoding = 'utf-8'
  28. operation = kwargs.get('operation', None)
  29. return self.validation(request.POST, operation)
  30. def validation(self, request_dict, operation):
  31. response = ResponseObject()
  32. token = request_dict.get('token', None)
  33. tko = TokenObject(token)
  34. if tko.code == 0:
  35. userID = tko.userID
  36. if operation == 'pushFeedBack':
  37. return self.do_push_msg_feed_back(userID, request_dict, response)
  38. elif operation == 'query':
  39. return self.do_query(userID, request_dict, response)
  40. elif operation == 'queryByAdmin':
  41. return self.do_query_by_admin(userID, request_dict, response)
  42. elif operation == 'update':
  43. return self.do_update(userID, request_dict, response)
  44. elif operation == 'delete':
  45. return self.do_delete(userID, request_dict, response)
  46. elif operation == 'deleteByAdmin':
  47. return self.do_delete_by_admin(userID, request_dict, response)
  48. elif operation == 'massPush':
  49. return self.do_mass_push(userID, request_dict, response)
  50. elif operation == 'queryMassPush':
  51. return self.do_query_mass_push(userID, request_dict, response)
  52. else:
  53. return response.json(414)
  54. else:
  55. return response.json(tko.code)
  56. def do_query_mass_push(self, userID, request_dict, response):
  57. own_perm = ModelService.check_perm(userID, 10)
  58. sender = request_dict.get('sender', None)
  59. page = int(request_dict.get('page', None))
  60. line = int(request_dict.get('line', None))
  61. if own_perm:
  62. smss_qs = SysMassModel.objects.filter()
  63. if sender:
  64. smss_qs.filter(sender__username=sender)
  65. count = smss_qs.count()
  66. smss_qs = smss_qs.values('id', 'sender__username', 'addTime', 'updTime', 'lang', 'recever', 'msg','platform')
  67. smss_qs = smss_qs[(page - 1) * line:page * line]
  68. return response.json(0, {'count':count,'datas':list(smss_qs)})
  69. else:
  70. return response.json(404)
  71. def do_mass_push(self, userID, request_dict, response):
  72. own_perm = ModelService.check_perm(userID, 10)
  73. if own_perm:
  74. app_str = request_dict.get('app_list', None)
  75. msg = request_dict.get('msg', None)
  76. region_str = request_dict.get('region', None)
  77. platform = request_dict.get('platform', None)
  78. app_list = app_str.split(',')
  79. region = region_str.split(',')
  80. nowTime = int(time.time())
  81. ue_filter = UserExtendModel.objects.filter()
  82. if app_list:
  83. ue_filter = ue_filter.filter(appBundleId__in=app_list)
  84. if region:
  85. ue_filter = ue_filter.filter(region__in=region)
  86. ue_count = ue_filter.count()
  87. range_count = math.ceil(ue_count / 5000)
  88. SysMassModel.objects.create(
  89. sender_id=userID,
  90. lang=region_str,
  91. recever=app_str,
  92. msg=msg,
  93. addTime=nowTime,
  94. updTime=nowTime,
  95. platform=platform
  96. )
  97. for i in range(range_count):
  98. querysetlist = []
  99. userID_list = ue_filter.values_list('userID_id', flat=True)
  100. # userID_list = ue_filter.values_list('userID_id', flat=True)[i*5000,(i+1)*5000]
  101. for urd in userID_list:
  102. querysetlist.append(SysMsgModel(userID_id=urd, msg=msg, addTime=nowTime, updTime=nowTime))
  103. SysMsgModel.objects.bulk_create(querysetlist)
  104. return response.json(0)
  105. else:
  106. return response.json(404)
  107. def do_push_msg_feed_back(self, userID, request_dict, response):
  108. own_perm = ModelService.check_perm(userID, 10)
  109. if own_perm:
  110. fid = request_dict.get('fid', None)
  111. msg = request_dict.get('msg', None)
  112. if all([fid, msg]):
  113. nowTime = int(time.time())
  114. fb_qs = FeedBackModel.objects.filter(id=fid)
  115. fb_list = fb_qs.values('userID_id')
  116. if fb_qs.exists():
  117. create_data = {'userID_id': fb_list[0]['userID_id'], 'msg': msg, 'addTime': nowTime,
  118. 'updTime': nowTime}
  119. try:
  120. SysMsgModel.objects.create(**create_data)
  121. fb_qs.update(status=1)
  122. except Exception as e:
  123. return response.json(500, repr(e))
  124. else:
  125. return response.json(0, {'status': 1, 'updTime': nowTime})
  126. else:
  127. return response.json(173)
  128. else:
  129. return response.json(444, 'fid,msg')
  130. else:
  131. return response.json(404)
  132. def do_query(self, userID, request_dict, response):
  133. page = request_dict.get('page', None)
  134. line = request_dict.get('line', None)
  135. if page and line:
  136. page = int(page)
  137. line = int(line)
  138. sm_qs = SysMsgModel.objects.filter(userID_id=userID)
  139. count = sm_qs.count()
  140. sm_qs = sm_qs[(page - 1) * line:page * line]. \
  141. values('status', 'id', 'msg', 'addTime', 'updTime')
  142. # sm_qs = SysMsgModel.objects.filter(userID_id=userID)[(page - 1) * line:page * line].values('sta')
  143. if sm_qs.exists():
  144. return response.json(0, {'data': list(sm_qs), 'count': count})
  145. else:
  146. return response.json(0, [])
  147. else:
  148. return response.json(444, 'page,line')
  149. def do_query_by_admin(self, userID, request_dict, response):
  150. own_perm = ModelService.check_perm(userID, 30)
  151. if own_perm:
  152. page = request_dict.get('page', None)
  153. line = request_dict.get('line', None)
  154. username = request_dict.get('username', None)
  155. if page and line:
  156. page = int(page)
  157. line = int(line)
  158. sm_qs = SysMsgModel.objects.filter()
  159. if username:
  160. userID_list = ModelService.get_user_list_by_username(username)
  161. sm_qs = sm_qs.filter(userID_id__in=userID_list)
  162. count = sm_qs.count()
  163. sm_qs = sm_qs[(page - 1) * line:page * line]. \
  164. values('status', 'id', 'msg', 'addTime', 'updTime', 'userID__username', 'userID__userEmail',
  165. 'userID__phone')
  166. for k, v in enumerate(sm_qs):
  167. if sm_qs[k]['userID__username'] == '':
  168. sm_qs[k]['userID__username'] = sm_qs[k]['userID__userEmail']
  169. if sm_qs[k]['userID__username'] == '':
  170. sm_qs[k]['userID__username'] = sm_qs[k]['userID__phone']
  171. sm_qs[k].pop('userID__userEmail')
  172. sm_qs[k].pop('userID__phone')
  173. return response.json(0, {'datas': list(sm_qs), 'count': count})
  174. else:
  175. return response.json(444, 'page,line')
  176. else:
  177. return response.json(404)
  178. def do_update(self, userID, request_dict, response):
  179. sid = request_dict.get('sid', None)
  180. if sid:
  181. sm_qs = SysMsgModel.objects.filter(userID_id=userID, id=sid)
  182. if sm_qs.exists():
  183. sm_qs.update(status=1)
  184. return response.json(0)
  185. else:
  186. return response.json(173)
  187. else:
  188. sm_qs = SysMsgModel.objects.filter(userID_id=userID).update(status=1)
  189. return response.json(0)
  190. def do_delete(self, userID, request_dict, response):
  191. sid = request_dict.get('sid', None)
  192. if sid:
  193. sm_qs = SysMsgModel.objects.filter(userID_id=userID, id=sid)
  194. if sm_qs.exists():
  195. sm_qs.delete()
  196. return response.json(0)
  197. else:
  198. return response.json(173)
  199. else:
  200. sm_qs = SysMsgModel.objects.filter(userID_id=userID)
  201. if sm_qs.exists():
  202. sm_qs.delete()
  203. return response.json(0)
  204. else:
  205. return response.json(173)
  206. def do_delete_by_admin(self, userID, request_dict, response):
  207. own_perm = ModelService.check_perm(userID, 10)
  208. if not own_perm:
  209. return response.json(404)
  210. sid = request_dict.get('sid', None)
  211. if sid:
  212. sm_qs = SysMsgModel.objects.filter(id=sid)
  213. if sm_qs.exists():
  214. sm_qs.delete()
  215. return response.json(0)
  216. else:
  217. return response.json(173)
  218. else:
  219. return response.json(444, 'sid')
  220. # 回复记录