第一次提交Group功能

main
rogersun 2 days ago
parent 1bf1488f82
commit 6f4e1b05fe
  1. 2
      dingxin_toolbox_drf/settings.py
  2. 1
      dingxin_toolbox_drf/urls.py
  3. 0
      group/__init__.py
  4. 3
      group/admin.py
  5. 6
      group/apps.py
  6. 65
      group/migrations/0001_initial.py
  7. 17
      group/migrations/0002_alter_groupdata_table.py
  8. 27
      group/migrations/0003_groupruntime.py
  9. 17
      group/migrations/0004_rename_functions_groupfuncs.py
  10. 18
      group/migrations/0005_alter_groupdata_update_time.py
  11. 18
      group/migrations/0006_alter_groupruntime_runtime_value.py
  12. 0
      group/migrations/__init__.py
  13. 70
      group/models.py
  14. 22
      group/serializers.py
  15. 8
      group/tasks.py
  16. 3
      group/tests.py
  17. 24
      group/urls.py
  18. 39
      group/utils/get_group_info.py
  19. 33
      group/utils/main_process.py
  20. 101
      group/utils/update_group_data.py
  21. 36
      group/views.py
  22. 172
      group/集团SQL.txt
  23. BIN
      group/集团功能整理.xlsx

@ -146,7 +146,7 @@ INSTALLED_APPS = [
'dspt_api', 'dspt_api',
'product', 'product',
'config', 'config',
# 'group', 'group',
'ai', 'ai',
'django_celery_beat', # 定时任务 'django_celery_beat', # 定时任务
'django_celery_results', # 定时任务 'django_celery_results', # 定时任务

@ -34,6 +34,7 @@ urlpatterns = [
path('prd/', include('product.urls')), path('prd/', include('product.urls')),
path('config/', include('config.urls')), path('config/', include('config.urls')),
path('ai/', include('ai.urls')), path('ai/', include('ai.urls')),
path('group/', include('group.urls')),
] ]
websocket_urlpatterns = [ websocket_urlpatterns = [

@ -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…
Cancel
Save