diff --git a/services/tone_service.py b/services/tone_service.py index 7ce88829e27eccf98a1656d1f25dc10a2e37bf9b..3a38734c09e4fa5c62ff590febb834750becf31c 100644 --- a/services/tone_service.py +++ b/services/tone_service.py @@ -1,8 +1,11 @@ import asyncio import json -from models.tone_model import ToneCase, query_tone_case_type, query_tone_suite, ToneSyncPull + +from app import log from common.tone.api import TONE_SUITE_QUERY from common.tone.tone_request import get_res_from_tone +from models.tone_model import ToneCase, query_tone_case_type, query_tone_suite, ToneSyncPull, \ + batch_insert_or_update_case async def query_suite(data, page_num=1, page_size=20): @@ -57,7 +60,35 @@ async def query_suite_from_tone(last_sync_time): req_data = { 'last_sync_time': last_sync_time } - res = await get_res_from_tone('get', TONE_SUITE_QUERY, req_data) - if res.status_code == 200: - return json.loads(res.text), True - return {}, False + status_code, result = await get_res_from_tone('get', TONE_SUITE_QUERY, req_data) + log.logger.debug(f'sync suite result is {result}') + if status_code == 200: + return json.loads(result), True + return None, False + + +async def sync_suite_by_manual(): + last_sync_pull = await ToneSyncPull.query_obj_one() + if last_sync_pull: + last_sync_time = last_sync_pull.gmt_created.strftime('%Y-%m-%d %H:%M:%S') + else: + last_sync_time = '2000-01-01 00:00:00' + log.logger.info("begin sync suite result manual.......") + result, ok = await query_suite_from_tone(last_sync_time) + print(result, ok) + if not ok: + return '手动更新失败', False + case_list = list() + for case in result['data']: + case_obj = { + 'tone_case_id': case['case_id'], + 'tone_case_name': case['case_name'], + 'suite_id': case['suite_id'], + 'suite_name': case['suite_name'], + 'test_type': case['test_type'] + } + case_list.append(case_obj) + log.logger.debug(f'modified case list length {len(case_list)}') + await batch_insert_or_update_case(case_list) + await ToneSyncPull().save(dict()) + return None, True diff --git a/views/tone_view.py b/views/tone_view.py index 7e3338103283520717b1fbcc91a83e578d1ae4c6..885f76157066f02ac65c51605811b65bd749a290 100644 --- a/views/tone_view.py +++ b/views/tone_view.py @@ -3,7 +3,7 @@ import asyncio from common.http import rsp from services.auth_service import login_auth, read_auth -from services.tone_service import query_suite, get_tone_case_type, query_tone_cases, sync_suite +from services.tone_service import query_suite, get_tone_case_type, query_tone_cases, sync_suite, sync_suite_by_manual from services.tone_job_service import create_tone_job, tone_callback bp = Blueprint('tone', url_prefix='api/tone/') @@ -45,6 +45,15 @@ async def tone_callback_view(request): return rsp(data=result) +@bp.get('/sync') +@read_auth +async def test(_, user_infos): + result, ok = await sync_suite_by_manual() + if not ok: + return rsp(code=500, msg=result) + return rsp() + + @bp.listener('after_server_start') async def sync_data(bp, loop): asyncio.create_task(sync_suite())