Commit dddd51cf authored by gaoming's avatar gaoming

somechange

parent 34657e6a
No preview for this file type
# Generated by Django 2.2.1 on 2019-06-03 09:21
import channels.HermesEnum
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='PromotionChannel',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('app_name', models.CharField(default=channels.HermesEnum.APP_TYPE(('0', 'gengmei')), max_length=64, verbose_name='app名字')),
('appid', models.CharField(max_length=64, verbose_name='渠道id')),
('idfa', models.CharField(max_length=64, verbose_name='设备id')),
('model', models.CharField(max_length=40, null=True, verbose_name='Model')),
('client_type', models.IntegerField(default=channels.HermesEnum.CLIENT_TYPE((0, '用户版客户端')), verbose_name='客户端类型')),
('callback_type', models.CharField(default=channels.HermesEnum.CHANNEL_CALLBACK_TYPE(('0', '无回调')), max_length=2)),
('callback', models.CharField(blank=True, default='', max_length=1024, verbose_name='渠道回调')),
('request', models.TextField(blank=True, default='', verbose_name='点击上报请求的json')),
('response', models.TextField(blank=True, default='', verbose_name='回调响应的json')),
('active_key', models.CharField(default='', max_length=1024, verbose_name='激活回调需要的额外签名')),
('record_from', models.CharField(blank=True, default='', max_length=128, verbose_name='数据的来源')),
('platform', models.IntegerField(default=channels.HermesEnum.PLATFORM_CHANNEL((0, '未知')), verbose_name='IOS或安卓类型')),
('version', models.CharField(max_length=10, null=True, verbose_name='APP版本')),
('os_version', models.CharField(max_length=20, null=True, verbose_name='系统版本')),
('screen', models.CharField(max_length=40, null=True, verbose_name='屏幕分辨率')),
('channel', models.CharField(default=channels.HermesEnum.CLIENT_TYPE((0, '用户版客户端')), max_length=40, null=True, verbose_name='渠道')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
('active_time', models.DateTimeField(blank=True, null=True, verbose_name='激活时间')),
('last_activity', models.DateTimeField(auto_now=True, verbose_name='最后活跃时间')),
('mac', models.CharField(default='', max_length=100, verbose_name='iOS设备的idfv或Android设备的mac')),
],
options={
'db_table': 'like_promotion_channel',
'unique_together': {('idfa', 'appid')},
'verbose_name': '渠道推广记录',
},
),
]
# Generated by Django 2.2.1 on 2019-06-03 11:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('like', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='promotionchannel',
name='app_name',
field=models.CharField(default='0', max_length=64, verbose_name='app名字'),
),
migrations.AlterField(
model_name='promotionchannel',
name='callback_type',
field=models.CharField(default='0', max_length=2),
),
migrations.AlterField(
model_name='promotionchannel',
name='channel',
field=models.CharField(default=0, max_length=40, null=True, verbose_name='渠道'),
),
migrations.AlterField(
model_name='promotionchannel',
name='client_type',
field=models.IntegerField(default=0, verbose_name='客户端类型'),
),
migrations.AlterField(
model_name='promotionchannel',
name='platform',
field=models.IntegerField(default=0, verbose_name='IOS或安卓类型'),
),
]
# Generated by Django 2.2.1 on 2019-06-04 01:58
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('like', '0002_auto_20190603_1902'),
]
operations = [
migrations.RenameField(
model_name='promotionchannel',
old_name='idfa',
new_name='device_id',
),
migrations.AlterUniqueTogether(
name='promotionchannel',
unique_together={('device_id', 'appid')},
),
]
# Generated by Django 2.2.1 on 2019-06-04 05:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('like', '0003_auto_20190604_0958'),
]
operations = [
migrations.AddField(
model_name='promotionchannel',
name='idfa',
field=models.CharField(max_length=64, null=True, verbose_name='idfa'),
),
migrations.AddField(
model_name='promotionchannel',
name='idfv',
field=models.CharField(max_length=64, null=True, verbose_name='idfv'),
),
migrations.AddField(
model_name='promotionchannel',
name='imei',
field=models.CharField(max_length=64, null=True, verbose_name='imei'),
),
migrations.AddField(
model_name='promotionchannel',
name='udid',
field=models.CharField(max_length=64, null=True, verbose_name='udid'),
),
migrations.AddField(
model_name='promotionchannel',
name='uuid',
field=models.CharField(max_length=64, null=True, verbose_name='uuid'),
),
migrations.AlterField(
model_name='promotionchannel',
name='mac',
field=models.CharField(default='', max_length=100, null=True, verbose_name='iOS设备的idfv或Android设备的mac'),
),
]
......@@ -19,7 +19,7 @@ from channels.HermesEnum import(
class PromotionChannel(models.Model):
class Meta:
unique_together = ('device_id', 'appid')
unique_together = ('device_id', 'appid','idfa','idfv','imei')
verbose_name = '渠道推广记录'
db_table = 'like_promotion_channel'
app_label = 'like'
......@@ -27,11 +27,11 @@ class PromotionChannel(models.Model):
app_name = models.CharField(max_length=64, verbose_name=u'app名字',default=APP_TYPE.GENGMEI.value[0])
appid = models.CharField(max_length=64, verbose_name=u'渠道id')
device_id = models.CharField(max_length=64, verbose_name=u'设备id')
idfa = models.CharField(max_length=64,null=True, verbose_name=u'idfa')
idfv = models.CharField(max_length=64,null=True, verbose_name=u'idfv')
udid=models.CharField(max_length=64,null=True, verbose_name=u'udid')
uuid=models.CharField(max_length=64,null=True, verbose_name=u'uuid')
imei = models.CharField(max_length=64,null=True,verbose_name=u'imei')
idfa = models.CharField(max_length=64, verbose_name=u'idfa')
idfv = models.CharField(max_length=64, verbose_name=u'idfv')
udid=models.CharField(max_length=64, verbose_name=u'udid')
uuid=models.CharField(max_length=64, verbose_name=u'uuid')
imei = models.CharField(max_length=64,verbose_name=u'imei')
#设备物理地址
mac = models.CharField(max_length=100, verbose_name=u'iOS设备的idfv或Android设备的mac', null=True, default="")
......@@ -62,20 +62,28 @@ class PromotionChannel(models.Model):
active_time = models.DateTimeField(null=True, blank=True, verbose_name=u'激活时间')
last_activity = models.DateTimeField(auto_now=True, verbose_name=u'最后活跃时间')
@staticmethod
def record(request,**kwargs):
"""
新增加渠道设备数据
"""
@staticmethod
def filter_exists_propertys(**kwargs):
'''
查找出可操作字段
'''
#获取类的全部字段
propertys=PromotionChannel.__dict__.keys()
keys=kwargs.keys()
#查找存在表中的字段
params={key.lower().strip():value for key,value in kwargs.items() if key.lower().strip() in propertys}
return params
@staticmethod
def record(request,**kwargs):
"""
新增加渠道设备数据
"""
params=PromotionChannel.filter_exists_propertys(**kwargs)
#获得request的数据
if request:
params.update({"request":json.dumps(request.GET.dict())})
......@@ -92,7 +100,7 @@ class PromotionChannel(models.Model):
try:
promotion= PromotionChannel.objects.create(**params)
except Exception as e:
print(str(e))
return False,CHANNEL_STATUS.ADD_FAIL_GENERAL
print(e)
return False,CHANNEL_STATUS.ADD_FAIL_GENERAL.value
return True,''
......@@ -5,5 +5,6 @@ app_name="like"
#(?P<sub_name>[a-z0-9]+/)?
urlpatterns =[
re_path(r'^[a-z0-9]+/click-notify$', views.Channel.as_view()),
re_path(r'^statistic$', views.Statistic.as_view())
re_path(r'^statistic$', views.Statistic.as_view()),
re_path(r'^[a-z0-9]+/doublecheck$', views.DoubleCheck.as_view())
]
\ No newline at end of file
......@@ -127,6 +127,31 @@ class DoubleCheck(View):
'''
查重复
'''
request=None
def get(self, request):
self.request=request
#取到渠道名称
platform=request.path.split('/')[2]
return DoubleCheck.__dict__.get(platform)(self)
def zuimei(self):
'''
最美查重接口
'''
idfa_str = self.request.GET.get('idfa','')
if not idfa_str:
return JsonResponse({'msg':'idfa lost!', 'result':0})
idfa_list=idfa_str.split(',')
p=PromotionChannel.objects.filter(idfa__in=idfa_list).values_list("idfa",flat=True)
result={idfa:'1' if idfa in p else '0' for idfa in idfa_list}
return JsonResponse(result)
......@@ -154,6 +179,18 @@ class Channel(View):
return JsonResponse({'code':1,'failMsg':msg})
return JsonResponse({"code":0,"failMsg":""})
def zuimei(self):
'''
最美点击
'''
data=self.request.GET.dict()
data.update({"platform":data.pop('apptype',''),"appid":"zuimei"})
return data
def google(self):
'''
谷歌推广
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment