107 lines
3.9 KiB
Plaintext
107 lines
3.9 KiB
Plaintext
async def get_user_role(ns={}):
|
|
sor = ns['sor']
|
|
# get role
|
|
ns['del_flg'] = '0'
|
|
res_role = await sor.R('userrole', ns)
|
|
if res_role:
|
|
user_role = res_role[0]
|
|
else:
|
|
return {
|
|
"status": False,
|
|
"msg": "userrole table, user id can not find..."
|
|
}
|
|
roleid = user_role.get('roleid')
|
|
# get role name
|
|
role_name = await sor.R('role', {'id': roleid})
|
|
if role_name:
|
|
role = role_name[0].get('role')
|
|
else:
|
|
return {
|
|
"status": False,
|
|
"msg": "role table, can not get role name"
|
|
}
|
|
return role
|
|
|
|
async def publish_product_add(ns={}):
|
|
if ns.get('userid'):
|
|
userid = ns.get('userid')
|
|
else:
|
|
userid = await get_user()
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
# 区分运营和普通客户
|
|
user_list = await sor.R('users', {'id': userid})
|
|
if not user_list:
|
|
return {
|
|
'status': False,
|
|
'msg': '没有找到匹配的用户'
|
|
}
|
|
orgid = user_list[0]['orgid']
|
|
domain_name = ns.get('url_link').split("//")[1].split("/")[0]
|
|
if 'localhost' in domain_name:
|
|
domain_name = 'dev.opencomputing.cn'
|
|
product_category = ns.get('product_category')
|
|
company_type = ns.get('company_type')
|
|
ns_dic = {
|
|
"id": uuid(),
|
|
"publish_type": ns.get("publish_type"),
|
|
"orgid": orgid,
|
|
"img": ns.get('img'),
|
|
"domain_name": domain_name,
|
|
"product_name": ns.get("product_name"),
|
|
"product_category": product_category,
|
|
"company_name": ns.get("company_name"),
|
|
"company_type": json.dumps(company_type) if isinstance(company_type, list) else company_type,
|
|
"contact_person": ns.get("contact_person"),
|
|
"job_title": ns.get("job_title"),
|
|
"phone_number": ns.get("phone_number"),
|
|
"email": ns.get("email"),
|
|
"cpu": ns.get("cpu"),
|
|
"memory": ns.get("memory"),
|
|
"gpu": ns.get("gpu"),
|
|
"sys_disk": ns.get("sys_disk"),
|
|
"data_disk": ns.get("data_disk"),
|
|
"net_card": ns.get("net_card"),
|
|
"price": ns.get("price"),
|
|
"unit": ns.get("unit"),
|
|
"discount": ns.get("discount"),
|
|
"short_term": ns.get("short_term"),
|
|
"priority": ns.get("priority") if ns.get("priority") else 1,
|
|
"status": ns.get("status") if ns.get("status") else '0',
|
|
"title": ns.get("title"),
|
|
"label": ns.get("label"),
|
|
"first_page": ns.get("first_page") if ns.get("first_page") else '0',
|
|
"requirement_summary": ns.get("requirement_summary"),
|
|
"related_parameters": ns.get("related_parameters"),
|
|
"application_scenario": ns.get("application_scenario"),
|
|
"audit_status": ns.get('audit_status', 'pending'),
|
|
}
|
|
if ns.get('discount') == '0':
|
|
ns['discount'] = None
|
|
ns_dic['discount'] = None
|
|
|
|
if ns.get('price') and ns.get('discount'):
|
|
ns_dic['discount_price'] = float(ns.get('price')) * float(ns['discount']) / 10
|
|
else:
|
|
ns_dic['discount_price'] = ns['price']
|
|
user_role = await get_user_role({'userid': userid, 'sor': sor})
|
|
# 非客户角色不需要审批
|
|
if user_role != '客户':
|
|
ns['status'] = '1'
|
|
ns_dic['audit_status'] = 'approved'
|
|
ns_dic['first_page'] = '1'
|
|
try:
|
|
await sor.C('user_publish_product', ns_dic)
|
|
return {
|
|
'status': True,
|
|
'msg': 'publish product created successfully'
|
|
}
|
|
except Exception as e:
|
|
return {
|
|
'status': False,
|
|
'msg': 'Failed to publish product, %s' % str(e)
|
|
}
|
|
|
|
|
|
ret = await publish_product_add(params_kw)
|
|
return ret |