def insert_usergroup(project,group_id,data,list_desc,jobs_id,init_time=int(time.time())): #重新执行该分群 index_id = check_lastest_usergroup_list_index(project=project,group_id=group_id) try: list_init_count = insert_usergroup_list(project=project,group_id=group_id,group_index=index_id+1,status=2,list_desc=list_desc,jobs_id=jobs_id) list_id = check_list_id(project=project, group_id=group_id, group_list_index=index_id+1) data_index = 0 for item in data['data_list']: data_index = data_index + 1 if 'json' in item : item['json']['group_id'] = group_id item['json']['key'] = item['key'] insert_usergroup_data(project=project, group_list_id=list_id[0][0], data_index=data_index, key=item['key'], json=json.dumps(item['json']), enable=item['enable']) insert_usergroup_list(project=project,group_id=group_id,group_index=index_id+1,list_init_date=init_time,status=3,complete_at=0,apply_temple_times=0,item_add=1,created_at=None,updated_at=None,jobs_id=jobs_id) insert_usergroup_list(project=project,group_id=group_id,group_index=index_id+1,status=5,complete_at=int(time.time()),jobs_id=jobs_id) update_usergroup_plan(project=project, plan_id=group_id, latest_data_list_index=index_id+1,updated_at=int(time.time()), repeat_times_add=1, latest_data_time=int(time.time())) return 5,index_id+1 except Exception: error = traceback.format_exc() list_info = check_list_id(project=project, group_id=group_id, group_list_index=index_id+1) if list_info and list_info[0][1]>0: insert_usergroup_list(project=project,group_id=group_id,group_index=index_id+1,status=4,complete_at=int(time.time()),jobs_id=jobs_id) write_to_log(filename='etl_model',defname='insert_usergroup',result=error) return 4,index_id+1 else : insert_usergroup_list(project=project,group_id=group_id,group_index=index_id+1,status=6,complete_at=int(time.time()),jobs_id=jobs_id) write_to_log(filename='etl_model',defname='insert_usergroup',result=error) return 6,0
def create_noti_group(project, temple_id, user_group_id=None, data_id=None, owner='noti', send_at=None): #对分群应用模板,有data_id时,优先使用data_id result_temple = select_noti_temple(project=project, temple_id=temple_id) if not user_group_id and not data_id: return 'no_group' else: if user_group_id and not data_id: result_data = select_usergroup_data(project=project, group_list_id=user_group_id) elif data_id: result_data = select_usergroupdata_data(project=project, data_id=data_id) timenow = int(time.time()) result_group = insert_noti_group( project=project, plan_id=result_data[0][0][0], list_id=result_data[0][0][1], data_id=result_data[0][0][2], temple_id=result_temple[0][0][0], owner=owner, send_at=send_at if send_at else timenow, sent=0, total=result_data[1], priority=13, status=result_data[0][0][6]) for noti in result_data[0]: timenow = int(time.time()) temple_content = apply_temple( project=project, temple_args=json.loads(result_temple[0][0][2]), temple_content=json.loads(result_temple[0][0][3]), data_json=json.loads(noti[5]), data_key=noti[4], group_id=user_group_id, owner=owner, send_at=send_at if send_at else timenow) insert_result = insert_noti( project=project, type_1=json.loads(result_temple[0][0][2])['meta']['medium_id'], created_at=timenow, updated_at=timenow, distinct_id=noti[4], content=temple_content, send_at=send_at if send_at else timenow, plan_id=noti[0], list_id=noti[1], data_id=noti[2], temple_id=result_temple[0][0][0], noti_group_id=result_group[2], priority=13, status=noti[6], owner=owner, recall_result=None, key=temple_content['key'] if 'key' in temple_content else None, level=temple_content['level'] if 'level' in temple_content else None) update_noti_temple( project=project, temple_id=temple_id, apply_times=1, lastest_apply_time=timenow, lastest_apply_list=user_group_id if user_group_id else 0) update_noti_group(project=project, noti_group_id=result_group[2]) update_usergroup_list(project=project, list_id=result_data[0][0][1], apply_temple_times=1) update_usergroup_plan(project=project, plan_id=result_data[0][0][0], latest_apply_temple_id=temple_id, latest_apply_temple_time=timenow) return 'success'