|
@@ -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))
|
|
|
+
|