diff --git a/b/provider/providerAdd.dspy b/b/provider/providerAdd.dspy index b522eaa..ae3d96e 100644 --- a/b/provider/providerAdd.dspy +++ b/b/provider/providerAdd.dspy @@ -82,14 +82,6 @@ async def providerAdd(ns={}): 'status': False, 'msg': 'provider add failed, orgcode is empty' } - # filter by orgcode - res = await sor.R('organization', {}) - orgcodes = [orgc.get('orgcode') for orgc in res] - if org_code in orgcodes: - return { - 'status': False, - 'msg': 'provider add failed, orgcode has already exist' - } if not ns.get('orgid'): orgid_li = await sor.R('users', {'id': await get_user()}) orgid = orgid_li[0].get('orgid') if orgid_li else '' @@ -101,8 +93,33 @@ async def providerAdd(ns={}): else: orgid = ns.get('orgid') + # filter by orgcode; existing provider returns ids for idempotent callers + exist_org_li = await sor.R('organization', {'orgcode': org_code, 'del_flg': '0'}) + if len(exist_org_li) >= 1: + exist_org = exist_org_li[0] + exist_provider_li = await sor.R('provider', {'orgid': exist_org.get('id'), 'del_flg': '0'}) + if not exist_provider_li: + return { + 'status': False, + 'msg': 'provider add failed, orgcode has already exist but provider not found' + } + exist_protocol_li = await sor.R('saleprotocol', {'offer_orgid': exist_org.get('id'), 'bid_orgid': orgid, 'del_flg': '0'}) + if not exist_protocol_li: + exist_protocol_li = await sor.R('saleprotocol', {'offer_orgid': exist_org.get('id'), 'del_flg': '0'}) + return { + 'status': True, + 'msg': 'provider already exist', + 'data': { + 'orgid': exist_org.get('id'), + 'provider_orgid': exist_org.get('id'), + 'provider_id': exist_provider_li[0].get('id'), + 'protocolid': exist_protocol_li[0].get('id') if exist_protocol_li else None + } + } + # 供应商parentid 和 运营机构id相同 ns_org['parentid'] = orgid + ns_sale_mode['bid_orgid'] = orgid if not ns_provider.get('start_date'): ns_provider['start_date'] = time.strftime('%Y-%m-%d %H:%M:%S') @@ -115,7 +132,13 @@ async def providerAdd(ns={}): await openProviderAccounts(sor, orgid, ns_org['id']) return { "status": True, - "msg": "provider add success" + "msg": "provider add success", + "data": { + "orgid": ns_org['id'], + "provider_orgid": ns_org['id'], + "provider_id": ns_provider['id'], + "protocolid": ns_sale_mode['id'] + } } except Exception as e: raise e