async def cpccProviderAdd(ns={}): """ add new provider `name`: 名称, `description`: 描述, `appid`: 应用id, `providerkey`: 应用key, `state`: 状态, `start_date`: 起效日期, `end_date`: 失效日期, `sale_mode`: 销售方式, `del_flag`: 删除标志 :param ns: :return: """ ns['orgname'] = ns.get('name') ns['start_date'] = '2025-01-01' ns['end_date'] = '2099-01-01' ns['settle_mode'] = '3' ns['settle_flowid'] = '0' ns['settle_datep'] = 'M00' ns['salemode'] = '0' ns_org = { 'id': uuid(), 'orgname': ns.get('orgname') or '', 'orgcode': ns.get('orgcode') or '', 'org_type': 4, 'accountid': ns.get('accountid') or '' } ns_provider = { 'id': uuid(), 'orgid': ns_org['id'], 'name': ns.get('name') or '', 'description': ns.get('description') or '', 'appid': ns.get('appid') or '', 'providerkey': ns.get('providerkey') or '', 'state': ns.get('state') or 0, 'start_date': ns.get('start_date'), 'end_date': ns.get('end_date'), # 'sale_mode': ns.get('sale_mode') or '', 'settle_mode': ns.get('settle_mode') or '', 'settle_flowid': ns.get('settle_flowid') or '', 'settle_datep': ns.get('settle_datep') } if ns.get('salemode') == '0': ns_provider['discount_mode'] = 1 elif ns.get('salemode') == '1': ns_provider['rebate_mode'] = 1 elif ns.get('salemode') == '2': ns_provider['floorprice_mode'] = 1 ns_sale_mode = { 'id': uuid(), 'offer_salemanid': ns.get('offer_salemanid'), 'offer_orgid': ns_org['id'], 'bid_orgid': ns.get('orgid'), 'salemode': ns.get('salemode'), 'settlemode': ns.get('settle_mode'), 'settle_dp': ns.get('settle_datep'), 'protocolfile': ns.get('protocolfile'), 'start_date': ns.get('start_date'), 'end_date': ns.get('end_date') } sdate = str(ns.get('start_date')) if sdate.isdigit(): timeStamp = int(ns.get('start_date')) timeArray = time.localtime(timeStamp) otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) ns_provider['start_date'] = otherStyleTime else: ns_provider['start_date'] = sdate db = DBPools() async with db.sqlorContext('kboss') as sor: org_code = ns.get('orgcode') # bind the orgcode if not org_code: return { 'status': False, 'msg': 'provider add failed, orgcode is empty' } # filter by orgcode res = await sor.R('organization', {'del_flg': '0'}) 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 '' if not orgid: return { 'status': False, 'msg': 'can not find orgid by the user' } else: orgid = ns.get('orgid') # 供应商parentid 和 运营机构id相同 ns_org['parentid'] = orgid if not ns_provider.get('start_date'): ns_provider['start_date'] = time.strftime('%Y-%m-%d %H:%M:%S') if not ns_provider.get('end_date'): ns_provider['end_date'] = '9999-12-31' try: await sor.C('organization',ns_org) await sor.C('provider',ns_provider) await sor.C('saleprotocol', ns_sale_mode) await openProviderAccounts(sor, orgid, ns_org['id']) return { "status": True, "msg": "provider add success" } except Exception as e: raise e return { "status": False, "msg": "provider add failed" } ret = await cpccProviderAdd(params_kw) return ret