Exemplo n.º 1
0
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
Exemplo n.º 2
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'