Răsfoiți Sursa

增加关联表userExtend用户信息扩展表
增加系统消息群发

chenjunkai 5 ani în urmă
părinte
comite
3d83bccb8d

+ 2 - 0
Ansjer/test/kbt.py

@@ -0,0 +1,2 @@
+for i in range(10):
+    print(i)

+ 24 - 2
Controller/SysMsg.py

@@ -12,10 +12,10 @@
 @Contact: chanjunkai@163.com
 """
 import time
-
+import math
 from django.views.generic.base import View
 
-from Model.models import SysMsgModel, FeedBackModel
+from Model.models import SysMsgModel, FeedBackModel, UserExtendModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.ModelService import ModelService
@@ -51,11 +51,33 @@ class SysMsgView(View):
                 return self.do_delete(userID, request_dict, response)
             elif operation == 'deleteByAdmin':
                 return self.do_delete_by_admin(userID, request_dict, response)
+            elif operation == 'massPush':
+                return self.do_mass_push(userID, request_dict, response)
             else:
                 return response.json(414)
         else:
             return response.json(tko.code)
 
+    def do_mass_push(self, userID, request_dict, response):
+        app_list = request_dict.get('app_list')
+        msg = request_dict.get('msg')
+        app_list = app_list.split(',')
+        nowTime = int(time.time())
+        if app_list:
+            ue_filter = UserExtendModel.objects.filter(appBundleId__in=app_list)
+            ue_count = ue_filter.count()
+            range_count = math.ceil(ue_count / 5000)
+            for i in range(range_count):
+                querysetlist = []
+                userID_list = ue_filter.values_list('userID_id', flat=True)
+                for urd in userID_list:
+                    querysetlist.append(SysMsgModel(userID_id=urd, msg=msg, addTime=nowTime, updTime=nowTime))
+                SysMsgModel.objects.bulk_create(querysetlist)
+            return response.json(0)
+        else:
+            return response.json(444, 'app_list')
+        
+
     def do_push_msg_feed_back(self, userID, request_dict, response):
         own_perm = ModelService.check_perm(userID, 10)
         if own_perm:

+ 23 - 7
Controller/UserBrandController.py

@@ -21,7 +21,7 @@ from django.views.generic.base import View
 
 from Ansjer.config import DOMAIN_HOST, AWS_DynamoDB_REGION, AWS_DynamoDB_ACCESS_KEY, AWS_DynamoDB_SECRET_KEY, \
     USER_BRAND, USER_BRAND_ALL
-from Model.models import Device_User
+from Model.models import Device_User, UserExtendModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -210,8 +210,8 @@ class MyserviceDynamodb(object):
     # page分页数,line条数,table_name表名称,last_evaluated查询开始值,page_value记录分页开始值
     def get_page_line(self, page, line, table_name, last_evaluated, page_value):
         dynamodb = self.session.resource('dynamodb')
-        if not dynamodb:
-            raise DynamodbConnectionError("Failed to get resource for dynamodb!")
+        # if not dynamodb:
+        #     raise DynamodbConnectionError("Failed to get resource for dynamodb!")
         table = dynamodb.Table(table_name)
         last_evaluated_key = last_evaluated
         try:
@@ -276,8 +276,8 @@ class MyserviceDynamodb(object):
 
     def get_item(self, table_name, username):
         dynamodb = self.session.resource('dynamodb')
-        if not dynamodb:
-            raise DynamodbConnectionError("Failed to get resource for dynamodb!")
+        # if not dynamodb:
+        #     raise DynamodbConnectionError("Failed to get resource for dynamodb!")
         try:
             table = dynamodb.Table(table_name)
             response = table.scan(
@@ -380,8 +380,8 @@ my = MyserviceDynamodb()
 # print(my.table_delete('user_brand'))
 # print(my.table_delete('user_brand_all'))
 
-my.table_create(USER_BRAND)
-my.user_brand_all_table_create(USER_BRAND_ALL)
+# my.table_create(USER_BRAND)
+# my.user_brand_all_table_create(USER_BRAND_ALL)
 
 
 # print(my.item_put('user_brand'))
@@ -508,6 +508,22 @@ class UserBrandInfo(View):
                 'ExpirationTime_TTL': addTime + 2592000,
                 'ip': self.clientIP
             }
+            # 增加用户扩展信息
+            user_extend_qs = UserExtendModel.objects.filter(userID_id=userID)
+            if user_extend_qs.exists():
+                update_dict = {
+                    'updTime': addTime,
+                    'appBundleId': appId
+                }
+                user_extend_qs.update(**update_dict)
+            else:
+                create_dict = {
+                    'addTime': addTime,
+                    'updTime': addTime,
+                    'appBundleId': appId,
+                    'userID_id': userID
+                }
+                UserExtendModel.objects.create(**create_dict)
             redisObj = RedisObject()
             add_user_brand_all_data = json.dumps(add_data)
             logKey = USER_BRAND_ALL

+ 12 - 12
Model/models.py

@@ -705,15 +705,15 @@ class UidPushModel(models.Model):
         ordering = ('-id',)
 
 
-# class UserAppModel(models.Model):
-#     id = models.AutoField(primary_key=True, verbose_name='自增id')
-#     userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
-#     appID = models.ForeignKey(App_Info, to_field='id', on_delete=models.CASCADE, verbose_name='appid编号', default=1)
-#     addTime = models.IntegerField(verbose_name='添加时间', default=0)
-#     updTime = models.IntegerField(verbose_name='更新时间', default=0)
-#
-#     class Meta:
-#         db_table = 'user_app'
-#         verbose_name = '用户绑定app'
-#         verbose_name_plural = verbose_name
-#         ordering = ('-id')
+class UserExtendModel(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
+    appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
+    addTime = models.IntegerField(verbose_name='添加时间', default=0)
+    updTime = models.IntegerField(verbose_name='更新时间', default=0)
+
+    class Meta:
+        db_table = 'user_extend'
+        verbose_name = '用户扩展信息表'
+        verbose_name_plural = verbose_name
+        ordering = ('-id',)

+ 61 - 0
Object/AWS/DynamodbObject.py

@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2019/10/9 16:17
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: DynamodbObject.py
+@Contact: chanjunkai@163.com
+"""
+from boto3 import Session
+from botocore.exceptions import ClientError
+from boto3.dynamodb.conditions import Key, Attr
+import logging
+import json
+import boto3
+from var_dump import var_dump
+
+# AWS_DynamoDB_REGION = ''
+# AWS_DynamoDB_ACCESS_KEY = ''
+# AWS_DynamoDB_SECRET_KEY = ''
+AWS_DynamoDB_REGION = 'us-west-1'
+AWS_DynamoDB_ACCESS_KEY = 'AKIA2E67UIMD4PZTYKYD'
+AWS_DynamoDB_SECRET_KEY = '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'
+
+
+class DynamodbObject(object):
+    def __init__(self, *args, **kwargs):
+        self.region = AWS_DynamoDB_REGION
+        self.access_key = AWS_DynamoDB_ACCESS_KEY
+        self.secret_key = AWS_DynamoDB_SECRET_KEY
+        self.session = Session(aws_access_key_id=self.access_key,
+                               aws_secret_access_key=self.secret_key,
+                               region_name=self.region)
+
+    def do_table_handle(self, table_name):
+        dynamodb = self.session.resource('dynamodb')
+        table_handle = dynamodb.Table(table_name)
+        return table_handle
+
+    def do_san(self, filter_data, table_name):
+        var_dump('xjklfjl;asjl;sdf')
+        table_handle = self.do_table_handle(table_name)
+        response = table_handle.scan(
+            ProjectionExpression="userID",
+            FilterExpression=Attr('appId').eq('com.ansjer.zccloud'),
+        )
+        var_dump('xxloo')
+        var_dump(response)
+        var_dump('****************')
+        items = response['Items']
+
+        return ''
+
+
+# dobj = DynamodbObject()
+# res = dobj.do_san(filter_data={'appId': 'com.ansjer.zccloud'}, table_name='user_brand')
+

+ 1 - 1
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
     def __init__(self, token=None):
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzA2ODY5NDl9.ivlkQ3d9ADaIsC76DR7q0K1irhTnm8RwaLnn_AVyO9g'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzMyODEzMjB9.qc20AsKGCVz-rvPSPyxulQy0BrG_nUdO3fxjT-KSv0w'
         if token == 'test':
             token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1Njk5OTg4OTYsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSIsImxhbmciOiJlbiIsIm1fY29kZSI6IjEyMzQxMzI0MzIxNCJ9.VAQtT9AbCCfXcrNj9DL5cvVasMDoI7AP8ptgU1GoMu8'
         self.token = token