kboss/b/product/HpcSyncUsers.dspy
2025-07-16 14:27:17 +08:00

224 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
# @Time: 2023/5/15 13:44
import os
import sys
sys.path.append('D:/Code/backend_code/test_')
import time
import json
import asyncio
import datetime
import requests
from uuid_ import uuid
from sqlor.dbpools import DBPools
from urllib.parse import urlencode
from appPublic.jsonConfig import getConfig
from accounting.businessdate import get_business_date, new_business_date
base_url = 'https://hpc.kaiyuancloud.cn/rms/api'
def imitate_cookie():
url = base_url + "/sign"
print(url)
cipher = "WIfHaMnen2WaRw4Agwenoe6TwDD3LxBbLEgMjVKDHADPE7xDJicjSG3yAfK4iNes1vUmVcoTxV2/+gMfla8ZDg=="
response = requests.post(url=url, data={"cipher": cipher})
print("rms/api", response.text)
cookie = response.headers.get("Set-Cookie")
print("Cookie", cookie)
return cookie
def get_cluster_list():
"""
¼¯Èº²éѯ
:return:
"""
url = base_url + "/biz/cluster/list?"
data = {
'clusterCode': 'shanhe',
'clusterName': 'ɽºÓ'
}
url_form = url + urlencode(data)
print(url_form)
response = requests.get(url, headers=headers)
print("cluster/list", response.text)
def get_queue_list():
"""
²éѯ¶ÓÁÐÁбí
:return:
"""
url = base_url + '/biz/queue/list'
print(url)
data = {
'clusterCode': 'shanhe'
}
url_data = url + '?' + urlencode(data)
response = requests.get(url=url_data, headers=headers)
print(response.text)
def get_queue_info():
"""
²éѯ¶ÓÁÐÏêÇé
:return:
"""
url = base_url + '/biz/queue/getInfo'
data = {
'clusterCode': 'shanhe',
'queueName': 'q_ys_test2',
'queueCode': 'q_ys_test2'
}
url_data = url + '?' + urlencode(data)
response = requests.get(url=url_data, headers=headers)
print(response.text)
def get_ldap_list():
"""
²éѯldapÁбí
:return:
"""
url = base_url + '/biz/ldap/list'
print(url)
data = {
'clusterCode': 'shanhe'
}
url_data = url + '?' + urlencode(data)
print(url_data)
response = requests.get(url=url_data, headers=headers)
print(response.text)
def get_ldap_info():
"""
²éѯldapÏêÇé
:return:
"""
# url = base_url + '/biz/ldap/userInfo'
url = base_url + '/biz/ldap/list?clusterCode=shanhe&clusterName=ɽºÓ'
print(url)
# data = {
# "clusterCode":"shanhe",
# "clusterName":"ɽºÓ",
# "ldapUid":"q_ys_test1",
# }
response = requests.get(url=url, headers=headers)
print(response.text)
def get_ldap_storageInfo():
"""
²éѯÕ˺ÅÏ´洢
:return:
"""
url = base_url + '/biz/ldap/storageInfo'
data = {
'clusterCode': 'shanhe',
'ldapUid Ldap': 'bz1'
}
url_data = url + '?' + urlencode(data)
response = requests.get(url=url_data, headers=headers)
print(response.text)
async def SyncUsers(ns={}):
url = base_url + '/biz/user/addCTimeInfo'
data = {
"loginId":"APPbNUfV5Im_KlZNnBRjd", # Óû§ id£¨±ØÌ
"loginName":"ÖéÄÂÀÊÂê", # Óû§Ãû³Æ£¨±ØÌ
"clusterCode":"shanhe", # ¼¯Èº±àÂ루±ØÌ
"ldapUid":"yeesuan11225", # ldap Õ˺ÅÃû³Æ£¨±ØÌ
"queueCode":"q_ys_test1", # ¶ÓÁбàÂ루±ØÌ
"ctime":1, # ºËʱÊýÁ¿£¨±ØÌî ctime>0£© double
}
res = requests.post(url=url, headers=headers, data=data)
print(res.status_code)
print(res.content.decode())
async def GetUserBill(ns={}):
"""
-> »ñÈ¡bill -> ͬ²½µ½jncs_bill table
-> ͨ¹ý(loginId(¼´orgid)=customerid,providerrid, productname)ÕÒµ½resourceid
-> ͬ²½µ½resource_using table -> ¸üÐÂcustomer_goods table
:param ns:
:return:
"""
orgname = '¼ÃÄϳ¬Ëã'
url = base_url + '/biz/user/cTimeInfoList'
data = {
'loginId': '86ee065f-2a3a-416c-b0df-5c759988ebbb',
'loginName': 'bakerwm'
}
url_data = url + '?' + urlencode(data)
res = requests.get(url=url_data, headers=headers)
if res.status_code != 200:
return {
'status': False,
'msg': 'url get status code is not 200, %s' % url_data
}
res_dict = json.loads(res.text)
db = DBPools()
async with db.sqlorContext('kboss') as sor:
try:
current_date = await get_business_date(sor)
ns_jncs_bill = {
'id': uuid(),
'bill_date': current_date,
'bill_timestamp': time.strftime('%Y-%m-%d %H:%M:%S'),
'loginid': res_dict.get('loginId') or '',
'loginname': res_dict.get('loginName') or '',
'clustercode': res_dict.get('clusterCode') or '',
'clustername': res_dict.get('clusterName') or '',
'queuecode': res_dict.get('queueCode') or '',
'queuename': res_dict.get('queueName') or '',
'totalctime': res_dict.get('totalCtime') or '',
'usedctime': res_dict.get('usedCtime') or '',
'remainctime': res_dict.get('remainCtime') or '',
'expiredctime': res_dict.get('expiredCtime') or ''
}
jncs_li = await sor.R('organization', {'orgname': orgname, 'del_flg': '0'})
if jncs_li:
jscs_id = jncs_li[0].get('id')
else:
return {
'status': False,
'msg': 'can not find jncs id in organization'
}
ns_goods = {
'providerrid': jscs_id,
'customerid': ns_jncs_bill.get('loginid'),
'productname': ns_jncs_bill.get('queuename'),
'del_flg': '0'
}
goods_li = await sor.R('customer_goods', ns_goods)
resourceid = goods_li[0].get('id')
ns_resouce_using = {
'id': uuid(),
'resourceid': resourceid,
'use_date': current_date,
'total_quantity': ns_jncs_bill.get('totalctime') or '',
'used_quantity': ns_jncs_bill.get('usedctime') or '',
'rest_quantity': ns_jncs_bill.get('remainctime') or '',
}
ns_customer_goods = {
'id': resourceid,
'total_quantity': ns_jncs_bill.get('totalctime') or '',
'used_quantity': ns_jncs_bill.get('usedctime') or '',
'rest_quantity': ns_jncs_bill.get('remainctime') or '',
}
await sor.C('jncs_bill', ns_jncs_bill)
await sor.C('resource_using', ns_resouce_using)
await sor.U('customer_goods', ns_customer_goods)
return {
'status': True,
'msg': 'sync jncs bill success'
}
except Exception as e:
raise e
return {
'status': False,
'msg': 'jncs get bill failed'
}
ret = await SyncUsers(params_kw)
return ret