1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# coding:utf-8
"""导出优质日记本(评分3.5分及以上)"""
import json
from talos.models.diary.diary import Diary
from talos.rpc import get_current_rpc_invoker
from django.core.management import BaseCommand
from utils.execel import ExcelWriter
from talos.services.goods import GoodsService
from talos.services.order import OrderService
max_diary_info = Diary.objects.filter(content_level=[3.5, 4, 5], is_online=True).order_by("id").last()
excel = ExcelWriter("diary_cpc.xlsx")
excel.write_header(['日记本ID', '日记本名称', '日记本星级', '是否开通CPC内容', '机构ID', '机构名称', '商务', '商务组'])
def get_diary_data(diaries):
row = 2
for diary in diaries:
try:
print("当前处理的日记本ID", diary.id)
rpc = get_current_rpc_invoker()
cpc_dic = rpc["artemis/cpc_community/diary/is_cpc"](diary_id=diary.id).unwrap()
cpc_result = "是" if cpc_dic.get("is_cpc") else "否"
if not diary.service_id and not diary.order_id:
excel.write_row(row_num=row, values=[
diary.id,
diary.title,
diary.content_level,
cpc_result,
"",
"",
"",
"",
])
row += 1
continue
service_id = diary.service_id
if not diary.service_id and diary.order_id:
order_info = OrderService.get_order_from_order_id(id=diary.order_id)
service_info = json.loads(order_info.service_snapshot)
service_id = service_info.get("id") or diary.service_id
service = GoodsService.get_service_by_service_id(service_id)
if not service or not service.doctor:
excel.write_row(row_num=row, values=[
diary.id,
diary.title,
diary.content_level,
cpc_result,
"",
"",
"",
"",
])
row += 1
continue
doctor_id = service.doctor.id
doctor_info = rpc['doctor/get_info/by_ids'](doctor_ids=[doctor_id, ]).unwrap()[0]
excel.write_row(row_num=row, values=[
diary.id,
diary.title,
diary.content_level,
cpc_result,
doctor_info.get('hospital_id', ''),
doctor_info.get('hospital_name', ''),
doctor_info.get('business', ''),
doctor_info.get('business_group', ''),
])
row += 1
continue
except Exception as e:
print(e)
row += 1
continue
class Command(BaseCommand):
def handle(self, *args, **options):
diaries = Diary.objects.filter(content_level__in=[3.5, 4, 5], is_online=True)
get_diary_data(diaries=diaries)
excel.save()
print('Excel已完成')