Selaa lähdekoodia

功能群发界面接口

locky 3 vuotta sitten
vanhempi
commit
7dcbb53f29
1 muutettua tiedostoa jossa 109 lisäystä ja 3 poistoa
  1. 109 3
      AdminController/UserManageController.py

+ 109 - 3
AdminController/UserManageController.py

@@ -21,6 +21,7 @@ import simplejson
 import simplejson as json
 import requests
 from django.contrib.auth.hashers import make_password, check_password  # 对密码加密模块
+from django.db import transaction
 from django.db.models import Q
 from django.http import HttpResponseRedirect
 from django.utils.decorators import method_decorator
@@ -34,7 +35,8 @@ from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CON
     OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
 from Controller.CheckUserData import DataValid, date_handler, RandomStr
 from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
-    UserAppFrequencyModel, CountryIPModel, CountryModel, UidChannelSetModel, MenuModel, FeedBackModel, StatResModel
+    UserAppFrequencyModel, CountryIPModel, CountryModel, UidChannelSetModel, MenuModel, FeedBackModel, StatResModel, \
+    SysMassModel, App_Info, SysMsgModel
 from Object.AWS.SesClassObject import SesClassObject
 from Object.AliSmsObject import AliSmsObject
 from Object.RedisObject import RedisObject
@@ -303,8 +305,10 @@ class UserManagement(View):
     def validation(self, request_dict, request, operation):
         language = request_dict.get('language', 'en')
         response = ResponseObject(language, 'pc')
-        if operation == '??':
-            return 0
+        if operation == 'sendSysMessage':
+            return self.sendSysMessage(request_dict, response)
+        elif operation == 'getAppDataList':
+            return self.getAppDataList(request_dict, response)
         else:
             tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'), returntpye='pc')
             if tko.code != 0:
@@ -321,6 +325,10 @@ class UserManagement(View):
                 return self.resetPassword(request_dict, response)
             elif operation == 'getFeedbackList':
                 return self.getFeedbackList(request_dict, response)
+            elif operation == 'deleteFeedBack':
+                return self.deleteFeedBack(request_dict, response)
+            elif operation == 'getSysMessageList':
+                return self.getSysMessageList(request_dict, response)
             else:
                 return response.json(404)
 
@@ -520,3 +528,101 @@ class UserManagement(View):
             print(e)
             return response.json(500, repr(e))
 
+    def deleteFeedBack(self, request_dict, response):
+        feedBackID = request_dict.get('feedBackID', None)
+        if not feedBackID:
+            return response.json(444)
+        try:
+            feed_back = FeedBackModel.objects.get(id=feedBackID)
+            sr_id_list = feed_back.FS.values_list('id', flat=True)
+            StatResModel.objects.filter(id__in=sr_id_list).delete()
+            feed_back.delete()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def getSysMessageList(self, request_dict, response):
+        print('request_dict: ', request_dict)
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+
+        if not all([pageNo, pageSize]):
+            return response.json(444)
+
+        page = int(pageNo)
+        line = int(pageSize)
+
+        try:
+            sys_mass_qs = SysMassModel.objects.filter()
+            total = sys_mass_qs.count()
+            sys_mass_qs = sys_mass_qs.values('id', 'sender__username', 'addTime', 'updTime', 'lang', 'recever', 'msg',
+                                             'platform')
+            sys_mass_qs = sys_mass_qs[(page - 1) * line:page * line]
+            return response.json(0, {'list': list(sys_mass_qs), 'total': total})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def getAppDataList(self, request_dict, response):
+        print('request_dict: ', request_dict)
+        platform = request_dict.get('platform', None)
+
+        if platform == 'android':
+            app_type = [1]
+        elif platform == 'ios':
+            app_type = [2]
+        else:
+            app_type = [1, 2]
+
+        try:
+            app_info_qs = App_Info.objects.filter(app_type__in=app_type).values('appBundleId', 'appName').distinct()
+            appBundleId_list = []
+            for app_info in app_info_qs:
+                appBundleId_list.append(app_info['appBundleId'])
+            return response.json(0, {'appBundleId_list': appBundleId_list})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def sendSysMessage(self, request_dict, response):
+        print('request_dict: ', request_dict)
+        lang = request_dict.get('lang', None)
+        platform = request_dict.get('platform', None)
+        recever = request_dict.get('app_list', None)
+        msg = request_dict.get('msg', None)
+
+        if not all([lang, platform, recever, msg]):
+            return response.json(444)
+
+        try:
+            with transaction.atomic():
+                # SysMassModel表创建群发消息记录数据
+                nowTime = int(time.time())
+                sender_id = Device_User.objects.filter(username='13800138001').values('userID').first()['userID']
+                SysMassModel.objects.create(
+                    sender_id=sender_id,
+                    lang=lang,
+                    platform=platform,
+                    recever=recever,
+                    msg=msg,
+                    addTime=nowTime,
+                    updTime=nowTime,
+                )
+                # 根据UserExModel表的userID群发消息给用户
+                region_list = lang.split(',')
+                appBundleId_list = recever.split(',')
+                userID_list = UserExModel.objects.filter(appBundleId__in=appBundleId_list, region__in=region_list)\
+                    .values_list('userID_id', flat=True)
+                sys_msg_list = []
+                for userID in userID_list:
+                    sys_msg_list.append(SysMsgModel(userID_id=userID, msg=msg, addTime=nowTime, updTime=nowTime))
+                    if len(sys_msg_list) > 5000:
+                        SysMsgModel.objects.bulk_create(sys_msg_list)
+                        sys_msg_list = []
+                SysMsgModel.objects.bulk_create(sys_msg_list)
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+