yzk_wechat_event/apps/system/models.py

241 lines
13 KiB
Python

import uuid
from .choices import *
from apps.user.models import User
class PaymentRecord(models.Model):
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False, related_name='payment_records')
pay_type = models.IntegerField(
choices=PaymentType.choices, verbose_name="付费类型")
activity_type = models.IntegerField(
choices=PaymentActivityType.choices, verbose_name="活动类型")
pay_amount = models.IntegerField(verbose_name="付费金额")
pay_time = models.DateTimeField(verbose_name="付费时间")
expire_time = models.DateTimeField(verbose_name="到期时间")
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
db_table = "py_payment_record"
verbose_name = "付费记录"
verbose_name_plural = verbose_name
ordering = ['-create_time']
class Activity(models.Model):
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False, related_name='activities',
db_index=True)
template = models.ForeignKey('Activity',
on_delete=models.DO_NOTHING, verbose_name="模板", db_constraint=False,
related_name='children', null=True, blank=True)
title = models.CharField(max_length=100, verbose_name="标题")
remark = models.TextField(verbose_name="备注", null=True, blank=True)
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
pv = models.IntegerField(verbose_name="pv", default=0)
# business_domain = models.ForeignKey('Domain', to_field='domain', db_constraint=False, on_delete=models.DO_NOTHING,
# verbose_name='业务域名', related_name='business_activities', null=True,
# blank=True,
# db_column='business_domain')
# short_chain_domain = models.ForeignKey('Domain', to_field='domain', db_constraint=False,
# on_delete=models.DO_NOTHING, null=True, blank=True,
# verbose_name='短链域名', related_name='short_chain_activities',
# db_column='short_chain_domain')
domain = models.ForeignKey('Domain', db_constraint=False, on_delete=models.DO_NOTHING,
verbose_name='业务域名', related_name='activities', null=True, blank=True)
business_domain = models.CharField(
max_length=100, verbose_name="业务域名", null=True, blank=True)
short_chain_domain = models.CharField(
max_length=100, verbose_name="短链域名", null=True, blank=True)
activity_type = models.IntegerField(choices=ActivityType.choices,
verbose_name="活动类型")
link_type = models.IntegerField(choices=ActivityLinkType.choices,
verbose_name="链接类型")
is_top = models.BooleanField(default=False, verbose_name="是否置顶")
create_json = models.JSONField(
verbose_name="创建json", null=True, blank=True)
request_json = models.JSONField(
verbose_name="请求json", null=True, blank=True)
response_json = models.JSONField(
verbose_name="响应json", null=True, blank=True)
platform_id = models.IntegerField(
verbose_name="平台id", null=True, blank=True)
is_quick_code = models.BooleanField(default=False, verbose_name="是否是快码")
is_delete = models.BooleanField(default=False, verbose_name="是否删除")
corpid = models.CharField(max_length=32, verbose_name="企业微信corpid", null=True, blank=True)
externaluserid = models.CharField(
max_length=32, verbose_name="外部联系人id", null=True, blank=True)
tklexpiretime = models.DateTimeField(
verbose_name="淘口令过期时间", null=True, blank=True)
class Meta:
db_table = 'py_activity'
verbose_name = '活动表'
ordering = ['-create_time']
def add_activity_history(self):
activity_history = ActivityHistory()
activity_history.activity = self
for field in self._meta.fields:
if field.name in ['id']:
continue
if hasattr(activity_history, field.name):
setattr(activity_history, field.name, getattr(self, field.name))
activity_history.save()
class ActivityHistory(models.Model):
activity = models.ForeignKey('Activity',
on_delete=models.DO_NOTHING, verbose_name="活动", db_constraint=False,
related_name='history')
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False, related_name='history_activities',
db_index=True)
template = models.ForeignKey('Activity',
on_delete=models.DO_NOTHING, verbose_name="模板", db_constraint=False,
related_name='history_templates', null=True, blank=True)
title = models.CharField(max_length=100, verbose_name="标题")
remark = models.TextField(verbose_name="备注", null=True, blank=True)
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
pv = models.IntegerField(verbose_name="pv", default=0)
domain = models.ForeignKey('Domain', db_constraint=False, on_delete=models.DO_NOTHING,
verbose_name='业务域名', related_name='history_activities', null=True, blank=True)
business_domain = models.CharField(
max_length=100, verbose_name="业务域名", null=True, blank=True)
short_chain_domain = models.CharField(
max_length=100, verbose_name="短链域名", null=True, blank=True)
activity_type = models.IntegerField(choices=ActivityType.choices,
verbose_name="活动类型")
link_type = models.IntegerField(choices=ActivityLinkType.choices,
verbose_name="链接类型")
is_top = models.BooleanField(default=False, verbose_name="是否置顶")
create_json = models.JSONField(
verbose_name="创建json", null=True, blank=True)
request_json = models.JSONField(
verbose_name="请求json", null=True, blank=True)
response_json = models.JSONField(
verbose_name="响应json", null=True, blank=True)
platform_id = models.IntegerField(
verbose_name="平台id", null=True, blank=True)
is_quick_code = models.BooleanField(default=False, verbose_name="是否是快码")
is_delete = models.BooleanField(default=False, verbose_name="是否删除")
class Meta:
db_table = 'py_activity_history'
verbose_name = '历史表'
ordering = ['-create_time']
class Domain(models.Model):
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False, related_name='domains',
db_index=True
)
domain = models.CharField(
max_length=100, verbose_name="域名", null=True, blank=True)
business_type = models.IntegerField(
verbose_name="业务类型", choices=DomainBusinessType.choices)
is_system = models.BooleanField(verbose_name="是否是系统", default=False)
domain_type = models.IntegerField(
verbose_name="域名类型", choices=DomainType.choices)
app_key = models.CharField(
max_length=100, verbose_name="app_key", null=True, blank=True)
secret = models.CharField(
max_length=100, verbose_name="secret", null=True, blank=True)
is_delete = models.BooleanField(default=False, verbose_name="是否删除")
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
db_table = 'py_domain'
verbose_name = '域名表'
ordering = ['-create_time']
class Authorization(models.Model):
name = models.CharField(max_length=100, verbose_name="名称")
remark = models.TextField(verbose_name="备注", blank=True, null=True)
cookie_key = models.CharField(
verbose_name="cookie key", max_length=32, null=True, blank=True, default=lambda: uuid.uuid4().hex)
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False, related_name='authorizations',
db_index=True)
platform_type = models.IntegerField(
verbose_name="平台类型", choices=AuthorizationPlatformType.choices)
uid = models.CharField(
max_length=100, verbose_name="平台uid", null=True, blank=True)
# authorization_type = models.IntegerField(
# verbose_name="授权类型", choices=AuthorizationType.choices)
account = models.CharField(
max_length=100, verbose_name="账号", null=True, blank=True)
password = models.CharField(
max_length=100, verbose_name="密码", null=True, blank=True)
app_key_secret_info = models.JSONField(
null=True, blank=True, verbose_name="app_key_secret授权信息")
cookie_info = models.JSONField(
null=True, blank=True, verbose_name="cookie授权信息")
auth_info = models.JSONField(null=True, blank=True, verbose_name="授权信息")
is_delete = models.BooleanField(default=False, verbose_name="是否删除")
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
cookie_update_time = models.DateTimeField(
null=True, blank=True, verbose_name="cookie更新时间")
auth_update_time = models.DateTimeField(
null=True, blank=True, verbose_name="授权更新时间")
app_key_secret_update_time = models.DateTimeField(
null=True, blank=True, verbose_name="授权更新时间")
cookie_warning_setting = models.IntegerField(verbose_name='cookie报警设置', null=True, blank=True)
cookie_check_result = models.IntegerField(verbose_name='cookie检测结果', null=True, blank=True,
choices=AuthorizationCookieCheckResultChoices.choices)
cookie_check_time = models.DateTimeField(verbose_name='cookie检测时间', null=True, blank=True)
class Meta:
db_table = 'py_authorization'
verbose_name = '授权表'
ordering = ['-create_time']
class ComplaintPageRecord(models.Model):
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False,
related_name='complaint_page_records', db_index=True)
activity = models.ForeignKey('Activity', on_delete=models.DO_NOTHING,
verbose_name="活动", db_constraint=False, related_name='complaint_page_records',
db_index=True)
info = models.JSONField(null=True, blank=True, verbose_name="投诉信息")
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
db_table = 'py_complaint_page_record'
verbose_name = '投诉页记录'
ordering = ['-create_time']
class QuickCode(models.Model):
user = models.ForeignKey(
User, on_delete=models.DO_NOTHING, verbose_name="用户", db_constraint=False,
related_name='quick_codes', db_index=True)
activity = models.ForeignKey('Activity', on_delete=models.DO_NOTHING,
verbose_name="活动", db_constraint=False, related_name='quick_codes',
db_index=True)
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
create_method = models.IntegerField(
choices=QuickCodeCreateMethodType.choices, default=QuickCodeCreateMethodType.MANUAL, verbose_name="创建方式")
quick_code_url = models.CharField(
max_length=255, null=True, blank=True, verbose_name="快码url")
converted_url = models.CharField(
max_length=255, null=True, blank=True, verbose_name="被转链url")
quick_code_type = models.IntegerField(
choices=QuickCodeType.choices, default=QuickCodeType.OFFICIAL, verbose_name="快码类型")
class Meta:
db_table = 'py_quick_code'
verbose_name = '快码记录'
ordering = ['-create_time']