parent
1bf1488f82
commit
6f4e1b05fe
23 changed files with 681 additions and 1 deletions
@ -0,0 +1,3 @@ |
|||||||
|
from django.contrib import admin |
||||||
|
|
||||||
|
# Register your models here. |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
from django.apps import AppConfig |
||||||
|
|
||||||
|
|
||||||
|
class GroupConfig(AppConfig): |
||||||
|
default_auto_field = 'django.db.models.BigAutoField' |
||||||
|
name = 'group' |
||||||
@ -0,0 +1,65 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-05-09 09:23 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Functions', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), |
||||||
|
('func_model', models.CharField(max_length=150, verbose_name='模块')), |
||||||
|
('func_name', models.CharField(max_length=150, verbose_name='功能名称')), |
||||||
|
('exec_sql', models.TextField(verbose_name='查询sql')), |
||||||
|
('is_delete', models.BooleanField(default=False, verbose_name='删除标记')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': '集团功能表', |
||||||
|
'verbose_name_plural': '集团功能表', |
||||||
|
'db_table': 'group_func', |
||||||
|
'db_table_comment': '集团功能表', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Group', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), |
||||||
|
('group_code', models.CharField(max_length=20, unique=True, verbose_name='集团编码')), |
||||||
|
('group_name', models.CharField(max_length=150, unique=True, verbose_name='集团编码')), |
||||||
|
('group_address', models.CharField(max_length=150, unique=True, verbose_name='集团地址')), |
||||||
|
('cinema_count', models.IntegerField(verbose_name='影院数量')), |
||||||
|
('is_delete', models.BooleanField(default=False, verbose_name='删除标记')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': '集团信息表', |
||||||
|
'verbose_name_plural': '集团信息表', |
||||||
|
'db_table': 'group_info', |
||||||
|
'db_table_comment': '集团信息表', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='GroupData', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), |
||||||
|
('data_count', models.IntegerField(verbose_name='数据量')), |
||||||
|
('data_lasttime', models.DateTimeField(verbose_name='数据最后更新时间')), |
||||||
|
('update_time', models.DateTimeField(verbose_name='数据更新时间')), |
||||||
|
('func', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.functions')), |
||||||
|
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.group')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': '集团功能数据统计表', |
||||||
|
'verbose_name_plural': '集团功能数据统计表', |
||||||
|
'db_table': 'group_data_statistics', |
||||||
|
'db_table_comment': '集团功能数据统计表', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-05-09 09:27 |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('group', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelTable( |
||||||
|
name='groupdata', |
||||||
|
table='group_data', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-05-09 09:30 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('group', '0002_alter_groupdata_table'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='GroupRuntime', |
||||||
|
fields=[ |
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('runtime_key', models.CharField(max_length=150, verbose_name='运行时key')), |
||||||
|
('runtime_value', models.CharField(max_length=300, verbose_name='运行时value')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': '集团数据运行时表', |
||||||
|
'verbose_name_plural': '集团数据运行时表', |
||||||
|
'db_table': 'group_runtime', |
||||||
|
'db_table_comment': '集团数据运行时表', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-06-23 02:36 |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('group', '0003_groupruntime'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RenameModel( |
||||||
|
old_name='Functions', |
||||||
|
new_name='GroupFuncs', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-06-23 06:12 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('group', '0004_rename_functions_groupfuncs'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='groupdata', |
||||||
|
name='update_time', |
||||||
|
field=models.DateTimeField(auto_now=True, verbose_name='数据更新时间'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2026-06-23 08:10 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('group', '0005_alter_groupdata_update_time'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='groupruntime', |
||||||
|
name='runtime_value', |
||||||
|
field=models.TextField(verbose_name='运行时value'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,70 @@ |
|||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
# Create your models here. |
||||||
|
|
||||||
|
class Group(models.Model): |
||||||
|
id = models.AutoField(primary_key=True, auto_created=True) |
||||||
|
group_code = models.CharField(verbose_name='集团编码', max_length=20, null=False, unique=True) |
||||||
|
group_name = models.CharField(verbose_name='集团编码', max_length=150, null=False, unique=True) |
||||||
|
group_address = models.CharField(verbose_name='集团地址', max_length=150, null=False, unique=True) |
||||||
|
cinema_count = models.IntegerField(verbose_name='影院数量') |
||||||
|
is_delete = models.BooleanField(verbose_name="删除标记", default=False) |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.group_code |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = '集团信息表' |
||||||
|
verbose_name_plural = '集团信息表' |
||||||
|
db_table_comment = '集团信息表' |
||||||
|
db_table = 'group_info' |
||||||
|
|
||||||
|
|
||||||
|
class GroupFuncs(models.Model): |
||||||
|
id = models.AutoField(primary_key=True, auto_created=True) |
||||||
|
func_model = models.CharField(verbose_name='模块', max_length=150, null=False) |
||||||
|
func_name = models.CharField(verbose_name='功能名称', max_length=150, null=False) |
||||||
|
exec_sql = models.TextField(verbose_name='查询sql', null=False) |
||||||
|
is_delete = models.BooleanField(verbose_name="删除标记", default=False) |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.func_name |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = '集团功能表' |
||||||
|
verbose_name_plural = '集团功能表' |
||||||
|
db_table_comment = '集团功能表' |
||||||
|
db_table = 'group_func' |
||||||
|
|
||||||
|
|
||||||
|
class GroupData(models.Model): |
||||||
|
id = models.AutoField(primary_key=True, auto_created=True) |
||||||
|
group = models.ForeignKey("Group", on_delete=models.CASCADE, null=False) |
||||||
|
func = models.ForeignKey("GroupFuncs", on_delete=models.CASCADE, null=False) |
||||||
|
data_count = models.IntegerField(verbose_name='数据量', null=False) |
||||||
|
data_lasttime = models.DateTimeField(verbose_name='数据最后更新时间', null=False) |
||||||
|
update_time = models.DateTimeField(verbose_name="数据更新时间", auto_now=True, null=False) |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.id |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = '集团功能数据统计表' |
||||||
|
verbose_name_plural = '集团功能数据统计表' |
||||||
|
db_table_comment = '集团功能数据统计表' |
||||||
|
db_table = 'group_data' |
||||||
|
|
||||||
|
|
||||||
|
class GroupRuntime(models.Model): |
||||||
|
runtime_key = models.CharField(verbose_name='运行时key', max_length=150, null=False) |
||||||
|
runtime_value = models.TextField(verbose_name='运行时value', null=False) |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.runtime_key |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = '集团数据运行时表' |
||||||
|
verbose_name_plural = '集团数据运行时表' |
||||||
|
db_table_comment = '集团数据运行时表' |
||||||
|
db_table = 'group_runtime' |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
from rest_framework import serializers |
||||||
|
from group.models import * |
||||||
|
|
||||||
|
class GroupInfoSerializer(serializers.ModelSerializer): |
||||||
|
class Meta: |
||||||
|
model = Group |
||||||
|
fields = '__all__' |
||||||
|
|
||||||
|
class GroupFuncsSerializer(serializers.ModelSerializer): |
||||||
|
class Meta: |
||||||
|
model = GroupFuncs |
||||||
|
fields = '__all__' |
||||||
|
|
||||||
|
class GroupDataStatisticsSerializer(serializers.ModelSerializer): |
||||||
|
class Meta: |
||||||
|
model = GroupData |
||||||
|
fields = '__all__' |
||||||
|
|
||||||
|
class GroupRuntimeSerializer(serializers.ModelSerializer): |
||||||
|
class Meta: |
||||||
|
model = GroupRuntime |
||||||
|
fields = '__all__' |
||||||
@ -0,0 +1,8 @@ |
|||||||
|
from celery import shared_task |
||||||
|
from group.utils.main_process import main_update_process |
||||||
|
|
||||||
|
@shared_task(time_limit=10*60, soft_time_limit=10*60) |
||||||
|
def group_data_task(): |
||||||
|
main_update_process() |
||||||
|
print("task success") |
||||||
|
return True |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
from django.test import TestCase |
||||||
|
|
||||||
|
# Create your tests here. |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
""" |
||||||
|
URL configuration for dingxin_toolbox_drf project. |
||||||
|
|
||||||
|
The `urlpatterns` list routes URLs to views. For more information please see: |
||||||
|
https://docs.djangoproject.com/en/4.2/topics/http/urls/ |
||||||
|
Examples: |
||||||
|
Function views |
||||||
|
1. Add an import: from my_app import views |
||||||
|
2. Add a URL to urlpatterns: path('', views.home, name='home') |
||||||
|
Class-based views |
||||||
|
1. Add an import: from other_app.views import Home |
||||||
|
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') |
||||||
|
Including another URLconf |
||||||
|
1. Import the include() function: from django.urls import include, path |
||||||
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) |
||||||
|
""" |
||||||
|
from django.contrib import admin |
||||||
|
from django.urls import path, include |
||||||
|
from group.views import * |
||||||
|
|
||||||
|
urlpatterns = [ |
||||||
|
path('get_group_data', get_group_data), |
||||||
|
path('get_group_func', GroupFuncsViewSet.as_view({'get': 'list'}), name='get_group_func'), |
||||||
|
] |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
import pymysql |
||||||
|
from pymysql.cursors import DictCursor |
||||||
|
from group.models import * |
||||||
|
|
||||||
|
group_database_info = { |
||||||
|
'host': '10.10.1.52', |
||||||
|
'port': 3306, |
||||||
|
'user': 'dgp_read', |
||||||
|
'password': '1d8qB83F9s63kpS', |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
class GetGroupInfo: |
||||||
|
def __init__(self): |
||||||
|
self.db_conn = pymysql.connect(**group_database_info) |
||||||
|
self.db_cursor = self.db_conn.cursor(cursor=DictCursor) |
||||||
|
self.group_list = self.get_groups() |
||||||
|
|
||||||
|
# 如果集团数据不存在则返回False |
||||||
|
def is_group_exist(self, group_code): |
||||||
|
if Group.objects.filter(group_code=group_code).exists(): |
||||||
|
return Group.objects.get(group_code=group_code) |
||||||
|
else: |
||||||
|
for group in self.group_list: |
||||||
|
if group.get('group_code') == group_code: |
||||||
|
return Group.objects.create(group_code=group_code, |
||||||
|
group_name=group.get('group_name'), |
||||||
|
group_address=f"https://plus.yinghezhong.com/{group_code}", |
||||||
|
cinema_count=group.get('cinema_count')) |
||||||
|
return False |
||||||
|
|
||||||
|
# 查询集团数据库获取集团信息 |
||||||
|
def get_groups(self): |
||||||
|
group_info_sql = """SELECT bcg.group_code, bcg.group_name, COUNT(bc.group_code) as cinema_count FROM dgp_bd_db.bd_cinema_group as bcg LEFT JOIN dgp_bd_db.bd_cinema as bc ON bcg.group_code = bc.group_code WHERE bcg.status = 1 AND bc.status = 1 AND length(bcg.group_code) = 8 AND bcg.group_code != '87879012' GROUP BY bcg.group_code ORDER BY cinema_count DESC;""" |
||||||
|
self.db_cursor.execute(group_info_sql) |
||||||
|
group_list = self.db_cursor.fetchall() |
||||||
|
self.db_cursor.close() |
||||||
|
self.db_conn.close() |
||||||
|
return group_list |
||||||
@ -0,0 +1,33 @@ |
|||||||
|
from datetime import datetime |
||||||
|
import json |
||||||
|
from group.models import * |
||||||
|
from group.utils.update_group_data import * |
||||||
|
|
||||||
|
|
||||||
|
def main_update_process(): |
||||||
|
# 遍历功能列表并连接DGP线上数据库获取统计数据 |
||||||
|
func_list = GroupFuncs.objects.filter(is_delete=False).all() |
||||||
|
ugd = UpdateGroupData() |
||||||
|
failed_list = [] |
||||||
|
for func in func_list: |
||||||
|
result = ugd.update_group_data(func) |
||||||
|
if result is not True: |
||||||
|
failed_list.extend(result) |
||||||
|
|
||||||
|
# 记录最后运行时间以及最后的错误信息 |
||||||
|
if runtime := GroupRuntime.objects.get(runtime_key='update_datetime'): |
||||||
|
runtime.runtime_value = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S') |
||||||
|
runtime.save() |
||||||
|
else: |
||||||
|
GroupRuntime.objects.create(runtime_key='update_datetime', |
||||||
|
runtime_value=datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')) |
||||||
|
if len(failed_list) > 0: |
||||||
|
print("failed_list", failed_list) |
||||||
|
if fail := GroupRuntime.objects.get(runtime_key='update_datetime'): |
||||||
|
fail.runtime_value = json.dumps(failed_list) |
||||||
|
runtime.save() |
||||||
|
else: |
||||||
|
GroupRuntime.objects.create(runtime_key='failed_data', runtime_value=json.dumps(failed_list)) |
||||||
|
|
||||||
|
# 生成影院功能对应数据字典并写入redis |
||||||
|
set_group_data_to_redis() |
||||||
@ -0,0 +1,101 @@ |
|||||||
|
import pymysql |
||||||
|
import json |
||||||
|
from datetime import datetime |
||||||
|
from pymysql.cursors import DictCursor |
||||||
|
from group.models import * |
||||||
|
from group.models import Group |
||||||
|
from group.utils.get_group_info import * |
||||||
|
from django_redis import get_redis_connection |
||||||
|
|
||||||
|
group_database_info = { |
||||||
|
'host': '10.10.1.52', |
||||||
|
'port': 3306, |
||||||
|
'user': 'dgp_read', |
||||||
|
'password': '1d8qB83F9s63kpS', |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
class UpdateGroupData: |
||||||
|
def __init__(self): |
||||||
|
self.db_conn = pymysql.connect(**group_database_info) |
||||||
|
self.db_cursor = self.db_conn.cursor(cursor=DictCursor) |
||||||
|
|
||||||
|
# 根据func获取集团数据,如果集团不存在则插入集团数据 |
||||||
|
def update_group_data(self, func): |
||||||
|
group_info = GetGroupInfo() |
||||||
|
self.db_cursor.execute(func.exec_sql) |
||||||
|
data = self.db_cursor.fetchall() |
||||||
|
failed_list = [] |
||||||
|
for d in data: |
||||||
|
code = d.get('group_code') |
||||||
|
print(func.func_model, func.func_name, d.get('group_code'), d.get('data'), d.get('last_time')) |
||||||
|
if g_obj := group_info.is_group_exist(code): |
||||||
|
print('找到集团插入数据') |
||||||
|
if GroupData.objects.filter(group=g_obj, func=func).first() is not None: |
||||||
|
gd = GroupData.objects.get(group=g_obj, func=func) |
||||||
|
gd.data_count = d.get('data') |
||||||
|
gd.data_lasttime = d.get('last_time') |
||||||
|
gd.save() |
||||||
|
else: |
||||||
|
GroupData.objects.create(group=g_obj, |
||||||
|
func=func, |
||||||
|
data_count=d.get('data'), |
||||||
|
data_lasttime=d.get('last_time')) |
||||||
|
|
||||||
|
else: |
||||||
|
print('没有找到集团') |
||||||
|
failed_list.append({'func_name': func.func_name, 'group_code': d.get('group_code')}) |
||||||
|
if len(failed_list) > 0: |
||||||
|
return failed_list |
||||||
|
return True |
||||||
|
|
||||||
|
|
||||||
|
# 组装返回数据并写入json |
||||||
|
def set_group_data_to_redis(): |
||||||
|
# 准备数据 |
||||||
|
groups = Group.objects.order_by('-cinema_count').all() |
||||||
|
funcs = GroupFuncs.objects.all() |
||||||
|
result = {'groups_data': [], |
||||||
|
'update_datetime': GroupRuntime.objects.filter(runtime_key='update_datetime').first().runtime_value, } |
||||||
|
for group in groups: |
||||||
|
print(group.group_code) |
||||||
|
group_data = { |
||||||
|
'group_info': { |
||||||
|
'group_code': group.group_code, |
||||||
|
'group_name': group.group_name, |
||||||
|
'group_address': group.group_address, |
||||||
|
'cinema_count': group.cinema_count |
||||||
|
}, |
||||||
|
'group_data': [] |
||||||
|
} |
||||||
|
for func in funcs: |
||||||
|
print(func.func_name) |
||||||
|
data = GroupData.objects.filter(group=group, func=func).first() |
||||||
|
if data is not None: |
||||||
|
data_count = data.data_count |
||||||
|
data_lasttime = datetime.strftime(data.data_lasttime, '%Y-%m-%d %H:%M:%S') |
||||||
|
else: |
||||||
|
data_count = 0 |
||||||
|
data_lasttime = '' |
||||||
|
group_data['group_data'].append({ |
||||||
|
'func_id': func.id, |
||||||
|
'func_model': func.func_model, |
||||||
|
'func_name': func.func_name, |
||||||
|
'data_count': data_count, |
||||||
|
'data_lasttime': data_lasttime, |
||||||
|
}) |
||||||
|
print({ |
||||||
|
'func_model': func.func_model, |
||||||
|
'func_name': func.func_name, |
||||||
|
'data_count': data_count, |
||||||
|
'data_lasttime': data_lasttime, |
||||||
|
}) |
||||||
|
result['groups_data'].append(group_data) |
||||||
|
# 写入Redis |
||||||
|
print("写入Redis") |
||||||
|
redis_conn = get_redis_connection() |
||||||
|
redis_key = f"group_data_{datetime.strftime(datetime.now(), '%Y-%m-%d')}" |
||||||
|
if redis_conn.exists(redis_key): |
||||||
|
redis_conn.delete(redis_key) |
||||||
|
redis_conn.set(redis_key, json.dumps(result), 3600 * 48) |
||||||
|
return result |
||||||
@ -0,0 +1,36 @@ |
|||||||
|
from django.http import JsonResponse |
||||||
|
from django_redis import get_redis_connection |
||||||
|
from django.shortcuts import render |
||||||
|
from django.views.decorators.csrf import csrf_exempt |
||||||
|
from rest_framework import viewsets |
||||||
|
|
||||||
|
from group.serializers import GroupFuncsSerializer |
||||||
|
from group.utils.update_group_data import * |
||||||
|
from group.utils.main_process import main_update_process |
||||||
|
|
||||||
|
|
||||||
|
# Create your views here. |
||||||
|
@csrf_exempt |
||||||
|
def get_group_data(request): |
||||||
|
redis_conn = get_redis_connection() |
||||||
|
redis_key = f"group_data_{datetime.strftime(datetime.now(), '%Y-%m-%d')}" |
||||||
|
if not redis_conn.exists(redis_key): |
||||||
|
main_update_process() |
||||||
|
if redis_conn.exists(redis_key): |
||||||
|
print('获取Redis数据') |
||||||
|
redis_value = json.loads(redis_conn.get(redis_key)) |
||||||
|
result_dict = { |
||||||
|
'status': 'success', |
||||||
|
'data': redis_value, |
||||||
|
} |
||||||
|
else: |
||||||
|
result_dict = { |
||||||
|
'status': 'fail', |
||||||
|
'data': [], |
||||||
|
} |
||||||
|
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False}) |
||||||
|
|
||||||
|
|
||||||
|
class GroupFuncsViewSet(viewsets.ModelViewSet): |
||||||
|
queryset = GroupFuncs.objects.all() |
||||||
|
serializer_class = GroupFuncsSerializer |
||||||
@ -0,0 +1,172 @@ |
|||||||
|
# 票务管理 |
||||||
|
# 影片库 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_film_db.f_cinema_film GROUP BY group_code; |
||||||
|
|
||||||
|
# 价格策略 |
||||||
|
# 票价组 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_ticket_db.ticket_group GROUP BY group_code; |
||||||
|
|
||||||
|
# 排片指导 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_film_db.f_instruction GROUP BY group_code; |
||||||
|
|
||||||
|
# 票房补登审核 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(auditor_time, add_time)) as last_time FROM dgp_film_db.f_box_office_add GROUP BY group_code; |
||||||
|
|
||||||
|
# 客群管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_membership_db.customer_group WHERE customer_group_name NOT IN ('活跃用户', '促活用户', '潜在用户') GROUP BY group_code; |
||||||
|
|
||||||
|
# 会员卡活动 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_membership_db.membership_activity GROUP BY group_code; |
||||||
|
|
||||||
|
# 会员卡 |
||||||
|
# 订单管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_membership_db.card_order GROUP BY group_code; |
||||||
|
|
||||||
|
# 会员卡 |
||||||
|
# 等级管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_membership_db.group_card_level WHERE is_deleted=0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 卖品管理 |
||||||
|
# 售卖分组 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_sell_group WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 卖品管理 |
||||||
|
# 品牌管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_brands WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 库房管理 |
||||||
|
# 仓库 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_warehouse WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 库房管理 |
||||||
|
# 货架 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_shelf WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 原材料 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_bill WHERE status=1 AND goods_attribute=1 AND show_flag = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 单品 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_bill WHERE status=1 AND goods_attribute=2 AND show_flag = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 合成品 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_bill WHERE status=1 AND goods_attribute=3 AND show_flag = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 套餐 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_bill WHERE status=1 AND goods_attribute=4 AND show_flag = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 售卖键管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_rule_bill WHERE status=1 AND show_flag=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 品项管理 |
||||||
|
# 售卖规则 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_sell_rule_bill WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 供应商管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_supplier_bill WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 采购管理 |
||||||
|
# 代购协议 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_purchase_agreement WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 调货管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_retail_db.r_goods_transfer WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 联名卡 |
||||||
|
# 卡级别管理 |
||||||
|
SELECT group_no as group_code, COUNT(*) as data, MAX(IFNULL(updated_time, created_time)) as last_time FROM dgp_card_db.card_level WHERE status=1 GROUP BY group_no; |
||||||
|
|
||||||
|
# 联名卡 |
||||||
|
# 活动管理 |
||||||
|
SELECT group_no as group_code, COUNT(*) as data, MAX(IFNULL(updated_time, created_time)) as last_time FROM dgp_card_db.card_level_activity WHERE status=1 GROUP BY group_no; |
||||||
|
|
||||||
|
# 预售券 |
||||||
|
# 券类设置 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_coupon_db.coupon_strategy_bill WHERE audit_status IN (0,1,2,3) AND delete_flag = 0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 预售券 |
||||||
|
# 销售单管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_coupon_db.coupon_sell_order WHERE delete_flag=0 AND coupon_strategy_id IN (SELECT coupon_strategy_id FROM dgp_coupon_db.coupon_strategy_bill WHERE audit_status IN (0,1,2,3) AND delete_flag = 0) GROUP BY group_code; |
||||||
|
|
||||||
|
# 预售券 |
||||||
|
# 券码订单 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_coupon_db.coupon_barcode_order WHERE delete_flag=0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 预售券 |
||||||
|
# 影城券审核 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_coupon_db.coupon_sell_order_cinema GROUP BY group_code; |
||||||
|
|
||||||
|
# 预售券 |
||||||
|
# 平台券管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_coupon_db.coupon_platform_refund GROUP BY group_code; |
||||||
|
|
||||||
|
# 用户管理 |
||||||
|
# 总部岗位 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.role_group_role WHERE delete_flag = 0 AND role_type=0 AND source_type=1 AND show_flag=1 AND levels_flag=2 GROUP BY group_code; |
||||||
|
|
||||||
|
# 用户管理 |
||||||
|
# 影院岗位 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.role_group_role WHERE delete_flag = 0 AND role_type=0 AND source_type=1 AND show_flag=1 AND levels_flag=8 GROUP BY group_code; |
||||||
|
|
||||||
|
# 用户管理 |
||||||
|
# 总部账号 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.role_user WHERE delete_flag=0 AND user_type=1 AND show_flag=1 AND status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 用户管理 |
||||||
|
# 影院账号 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.role_user WHERE delete_flag=0 AND user_type=3 AND show_flag=1 AND status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 影院管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_cinema WHERE status <> 3 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 跨集团影院管理 |
||||||
|
SELECT interflow_group as group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_cross_cinema WHERE delete_flag=0 GROUP BY interflow_group; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 影院指标管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_kpi_target GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 客户管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_customer WHERE del_flag=0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 时段设置 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_cinema_time_rule WHERE del_flag=0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 招待管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_cinema_entertain WHERE delete_flag=0 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 补贴方管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_cinema_subsidies WHERE status=1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 银行管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.bd_bank GROUP BY group_code; |
||||||
|
|
||||||
|
# 影院管理 |
||||||
|
# 第三方卡管理 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_bd_db.customer_card_info WHERE delete_flag = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 审批流 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(update_time, create_time)) as last_time FROM dgp_workflow_db.wf_flow_definition WHERE status = 1 GROUP BY group_code; |
||||||
|
|
||||||
|
# 广告管理 |
||||||
|
# 设备列表 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_ad_db.equipment GROUP BY group_code; |
||||||
|
|
||||||
|
# 广告管理 |
||||||
|
# 模板列表 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_ad_db.template GROUP BY group_code; |
||||||
|
|
||||||
|
# 广告管理 |
||||||
|
# 素材列表 |
||||||
|
SELECT group_code, COUNT(*) as data, MAX(IFNULL(gmt_modified, gmt_create)) as last_time FROM dgp_ad_db.material GROUP BY group_code; |
||||||
Binary file not shown.
Loading…
Reference in new issue