阿里云服务器新建升级续费等业务参数改为从订单获取
This commit is contained in:
parent
3f462923f1
commit
24a8aa7567
@ -882,6 +882,22 @@ def create_server_order(**kwargs):
|
||||
# 生成订单号
|
||||
order_id = datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))
|
||||
|
||||
# 构建业务参数
|
||||
biz_params = {
|
||||
"plan_id": plan_id,
|
||||
"image_id": image_id,
|
||||
"period": period,
|
||||
"region_id": region_id,
|
||||
"monthly_price": monthly_price,
|
||||
"total_amount": total_amount,
|
||||
"plan_info": {
|
||||
"core": selected_plan.get('core'),
|
||||
"memory": selected_plan.get('memory'),
|
||||
"disk_size": selected_plan.get('disk_size'),
|
||||
"bandwidth": selected_plan.get('bandwidth')
|
||||
}
|
||||
}
|
||||
|
||||
# 创建订单记录
|
||||
order = jingrow.get_pg({
|
||||
"pagetype": "Order",
|
||||
@ -891,33 +907,14 @@ def create_server_order(**kwargs):
|
||||
"status": "待支付",
|
||||
"total_amount": total_amount,
|
||||
"title": f"{region_id}",
|
||||
"description": f"{selected_plan.get('core')}核/{selected_plan.get('memory')}GB/{selected_plan.get('disk_size')}GB, {period}个月"
|
||||
"description": f"{selected_plan.get('core')}核/{selected_plan.get('memory')}GB/{selected_plan.get('disk_size')}GB, {period}个月",
|
||||
"biz_params": json.dumps(biz_params, ensure_ascii=False)
|
||||
})
|
||||
order.insert(ignore_permissions=True)
|
||||
|
||||
# 创建服务器记录
|
||||
server = jingrow.get_pg({
|
||||
"pagetype": "Jsite Server",
|
||||
"team": team.name,
|
||||
"order_id": order_id,
|
||||
"status": "Pending",
|
||||
"region": region_id,
|
||||
"image_id": image_id,
|
||||
"end_date": jingrow.utils.add_months(jingrow.utils.nowdate(), period),
|
||||
"title": f"{region_id} - {selected_plan.get('core')}核/{selected_plan.get('memory')}GB",
|
||||
"planid": plan_id,
|
||||
"period": period,
|
||||
"plan_price": monthly_price,
|
||||
"cpu": selected_plan.get('core'),
|
||||
"memory": selected_plan.get('memory'),
|
||||
"disk_size": selected_plan.get('disk_size'),
|
||||
"bandwidth": selected_plan.get('bandwidth')
|
||||
})
|
||||
server.insert(ignore_permissions=True)
|
||||
|
||||
jingrow.db.commit()
|
||||
|
||||
return {"success": True, "order": order.as_dict(), "server": server.as_dict()}
|
||||
return {"success": True, "order": order.as_dict()}
|
||||
|
||||
except Exception as e:
|
||||
jingrow.log_error("创建服务器订单失败", str(e))
|
||||
@ -953,6 +950,17 @@ def create_server_renew_order(**kwargs):
|
||||
# 生成唯一订单号
|
||||
order_id = datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))
|
||||
|
||||
# 构建业务参数
|
||||
biz_params = {
|
||||
"server": server,
|
||||
"renewal_months": renewal_months,
|
||||
"plan_price": plan_price,
|
||||
"total_amount": total_amount,
|
||||
"instance_id": server_pg.instance_id,
|
||||
"region_id": server_pg.region,
|
||||
"plan_id": server_pg.planid
|
||||
}
|
||||
|
||||
# 创建订单记录
|
||||
order = jingrow.get_pg({
|
||||
"pagetype": "Order",
|
||||
@ -962,7 +970,8 @@ def create_server_renew_order(**kwargs):
|
||||
"status": "待支付",
|
||||
"total_amount": total_amount,
|
||||
"title": server_pg.instance_id,
|
||||
"description": str(renewal_months) # 存储续费月数
|
||||
"description": str(renewal_months), # 存储续费月数
|
||||
"biz_params": json.dumps(biz_params, ensure_ascii=False)
|
||||
})
|
||||
|
||||
order.insert(ignore_permissions=True)
|
||||
@ -1057,6 +1066,25 @@ def create_server_upgrade_order(**kwargs):
|
||||
# 生成唯一订单号
|
||||
order_id = datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))
|
||||
|
||||
# 构建业务参数
|
||||
biz_params = {
|
||||
"server": server,
|
||||
"new_plan_id": new_plan_id,
|
||||
"current_plan_price": current_plan_price,
|
||||
"new_plan_price": new_plan_price,
|
||||
"remaining_days": remaining_days,
|
||||
"upgrade_amount": upgrade_amount,
|
||||
"instance_id": server_pg.instance_id,
|
||||
"region_id": server_pg.region,
|
||||
"current_plan_id": server_pg.planid,
|
||||
"new_plan_info": {
|
||||
"core": new_plan.get('core'),
|
||||
"memory": new_plan.get('memory'),
|
||||
"disk_size": new_plan.get('disk_size'),
|
||||
"bandwidth": new_plan.get('bandwidth')
|
||||
}
|
||||
}
|
||||
|
||||
# 创建订单记录
|
||||
order = jingrow.get_pg({
|
||||
"pagetype": "Order",
|
||||
@ -1066,7 +1094,8 @@ def create_server_upgrade_order(**kwargs):
|
||||
"status": "待支付",
|
||||
"total_amount": upgrade_amount,
|
||||
"title": server_pg.instance_id,
|
||||
"description": new_plan_id # 存储新套餐ID
|
||||
"description": new_plan_id, # 存储新套餐ID
|
||||
"biz_params": json.dumps(biz_params, ensure_ascii=False)
|
||||
})
|
||||
|
||||
order.insert(ignore_permissions=True)
|
||||
@ -1097,18 +1126,24 @@ def renew_server(order_name):
|
||||
if not order:
|
||||
raise Exception("订单不存在")
|
||||
|
||||
# 从订单中获取信息
|
||||
instance_id = order.title # 实例ID
|
||||
renewal_months = int(order.description) # 续费月数
|
||||
# 从biz_params中读取业务参数
|
||||
biz_params = json.loads(order.biz_params) if order.biz_params else {}
|
||||
server_name = biz_params.get("server")
|
||||
renewal_months = biz_params.get("renewal_months", 1)
|
||||
instance_id = biz_params.get("instance_id")
|
||||
region_id = biz_params.get("region_id", "cn-shanghai")
|
||||
|
||||
# 查找服务器记录获取区域信息
|
||||
server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id})
|
||||
if not server_name or not instance_id:
|
||||
raise Exception("订单中缺少必要的服务器信息")
|
||||
|
||||
# 查找服务器记录
|
||||
server = jingrow.get_pg("Jsite Server", server_name)
|
||||
if not server:
|
||||
raise Exception("找不到对应的服务器记录")
|
||||
|
||||
# 调用阿里云API续费
|
||||
manager = _get_manager()
|
||||
result = manager.renew_instance(instance_id, renewal_months, server.region)
|
||||
result = manager.renew_instance(instance_id, renewal_months, region_id)
|
||||
|
||||
if not result or not result.get('success'):
|
||||
raise Exception(f"阿里云续费失败: {result.get('message', '未知错误')}")
|
||||
@ -1136,17 +1171,23 @@ def upgrade_server(order_name):
|
||||
if not order:
|
||||
raise Exception("订单不存在")
|
||||
|
||||
# 从订单中获取信息
|
||||
instance_id = order.title # 实例ID
|
||||
new_plan_id = order.description # 新套餐ID
|
||||
# 从biz_params中读取业务参数
|
||||
biz_params = json.loads(order.biz_params) if order.biz_params else {}
|
||||
server_name = biz_params.get("server")
|
||||
new_plan_id = biz_params.get("new_plan_id")
|
||||
instance_id = biz_params.get("instance_id")
|
||||
region_id = biz_params.get("region_id", "cn-shanghai")
|
||||
|
||||
# 查找服务器记录获取区域信息
|
||||
server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id})
|
||||
if not server_name or not new_plan_id or not instance_id:
|
||||
raise Exception("订单中缺少必要的服务器升级信息")
|
||||
|
||||
# 查找服务器记录
|
||||
server = jingrow.get_pg("Jsite Server", server_name)
|
||||
if not server:
|
||||
raise Exception("找不到对应的服务器记录")
|
||||
|
||||
# 调用阿里云API升级实例
|
||||
result = upgrade_aliyun_instance(instance_id, new_plan_id, server.region)
|
||||
result = upgrade_aliyun_instance(instance_id, new_plan_id, region_id)
|
||||
|
||||
# 打印result到后台日志
|
||||
jingrow.log_error("阿里云升级实例结果", f"订单 {order_name} 的升级结果: {result}")
|
||||
@ -1154,6 +1195,17 @@ def upgrade_server(order_name):
|
||||
if not result or not result.get('success'):
|
||||
raise Exception(f"阿里云升级失败: {result.get('message', '未知错误')}")
|
||||
|
||||
# 更新服务器记录中的套餐信息
|
||||
new_plan_info = biz_params.get("new_plan_info", {})
|
||||
if new_plan_info:
|
||||
server.planid = new_plan_id
|
||||
server.cpu = new_plan_info.get("core")
|
||||
server.memory = new_plan_info.get("memory")
|
||||
server.disk_size = new_plan_info.get("disk_size")
|
||||
server.bandwidth = new_plan_info.get("bandwidth")
|
||||
server.plan_price = biz_params.get("new_plan_price", 0)
|
||||
server.save(ignore_permissions=True)
|
||||
|
||||
# 更新订单状态
|
||||
order.status = "交易成功"
|
||||
order.save(ignore_permissions=True)
|
||||
@ -1181,16 +1233,17 @@ def create_aliyun_server(order_name):
|
||||
if not order:
|
||||
raise Exception("订单不存在")
|
||||
|
||||
# 查找对应的服务器记录(通过订单ID)
|
||||
server = jingrow.get_pg("Jsite Server", {"order_id": order.order_id})
|
||||
if not server:
|
||||
raise Exception("找不到对应的服务器记录")
|
||||
# 从biz_params中读取业务参数
|
||||
biz_params = json.loads(order.biz_params) if order.biz_params else {}
|
||||
plan_id = biz_params.get("plan_id")
|
||||
image_id = biz_params.get("image_id")
|
||||
period = biz_params.get("period", 1)
|
||||
region_id = biz_params.get("region_id", "cn-shanghai")
|
||||
monthly_price = biz_params.get("monthly_price", 0)
|
||||
plan_info = biz_params.get("plan_info", {})
|
||||
|
||||
# 从服务器记录中获取配置信息
|
||||
region_id = server.region
|
||||
image_id = server.image_id or 'e9363571cf2444aba422b17470285465'
|
||||
plan_id = server.planid or 'swas.s.c2m1s30b1.linux'
|
||||
period = server.period or 1
|
||||
if not plan_id or not image_id:
|
||||
raise Exception("订单中缺少必要的服务器配置信息")
|
||||
|
||||
# 调用阿里云API创建实例
|
||||
result = create_aliyun_instance(plan_id, image_id, period, region_id)
|
||||
@ -1204,10 +1257,26 @@ def create_aliyun_server(order_name):
|
||||
# 阿里云API返回的是instance_ids数组,取第一个实例ID
|
||||
instance_id = result['data']['instance_ids'][0]
|
||||
|
||||
# 更新服务器记录状态
|
||||
server.status = "Running"
|
||||
server.instance_id = instance_id
|
||||
server.save(ignore_permissions=True)
|
||||
# 创建本地服务器记录
|
||||
server = jingrow.get_pg({
|
||||
"pagetype": "Jsite Server",
|
||||
"team": order.team,
|
||||
"order_id": order.order_id,
|
||||
"status": "Running",
|
||||
"instance_id": instance_id,
|
||||
"region": region_id,
|
||||
"image_id": image_id,
|
||||
"end_date": jingrow.utils.add_months(jingrow.utils.nowdate(), period),
|
||||
"title": f"{region_id} - {plan_info.get('core', '')}核/{plan_info.get('memory', '')}GB",
|
||||
"planid": plan_id,
|
||||
"period": period,
|
||||
"plan_price": monthly_price,
|
||||
"cpu": plan_info.get('core'),
|
||||
"memory": plan_info.get('memory'),
|
||||
"disk_size": plan_info.get('disk_size'),
|
||||
"bandwidth": plan_info.get('bandwidth')
|
||||
})
|
||||
server.insert(ignore_permissions=True)
|
||||
|
||||
# 更新订单状态
|
||||
order.status = "交易成功"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user