更新Jsite Server字段,新建服务器时点击确认创建后同时创建支付订单和Jsite Server记录
This commit is contained in:
parent
207190822f
commit
e9f327af93
@ -136,10 +136,10 @@
|
||||
</div>
|
||||
<h3 class="text-xl font-medium text-gray-900 mb-2">支付成功!</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
您的订单已支付成功,服务器正在创建中。创建并启动需要 3-5 分钟,请耐心等待。
|
||||
您的订单已支付成功,服务器记录已创建。服务器正在后台创建中,创建并启动需要 3-5 分钟,请耐心等待。
|
||||
</p>
|
||||
<p class="text-gray-500 text-sm">
|
||||
创建完成后,您将收到通知,也可以在服务器列表中查看状态。
|
||||
您可以在服务器列表中查看服务器状态,创建完成后状态将更新为"Running"。
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@ -267,6 +267,7 @@ export default {
|
||||
success: false,
|
||||
// 支付相关状态
|
||||
order: null,
|
||||
server: null, // 服务器记录信息
|
||||
showPaymentProcessing: false,
|
||||
paymentSuccess: false,
|
||||
isProcessingPayment: false,
|
||||
@ -400,9 +401,11 @@ export default {
|
||||
|
||||
console.log('订单创建成功,完整响应:', data);
|
||||
console.log('订单ID:', data.order?.order_id);
|
||||
console.log('服务器记录:', data.server);
|
||||
|
||||
// 显示订单支付界面
|
||||
this.order = data.order;
|
||||
this.server = data.server; // 保存服务器记录信息
|
||||
this.showPaymentProcessing = true;
|
||||
|
||||
// 立即处理支付
|
||||
@ -436,7 +439,13 @@ export default {
|
||||
...(response.order || {}),
|
||||
status: '已支付'
|
||||
};
|
||||
this.$emit('success', orderData);
|
||||
|
||||
// 同时发送服务器记录信息
|
||||
const serverData = {
|
||||
...this.server
|
||||
};
|
||||
|
||||
this.$emit('success', { order: orderData, server: serverData });
|
||||
|
||||
this.isProcessingPayment = false;
|
||||
this.paymentSuccess = true;
|
||||
@ -511,7 +520,13 @@ export default {
|
||||
this.stopPaymentCheck();
|
||||
|
||||
const orderData = { ...this.order, ...(data.order || {}) };
|
||||
this.$emit('success', orderData);
|
||||
|
||||
// 同时发送服务器记录信息
|
||||
const serverData = {
|
||||
...this.server
|
||||
};
|
||||
|
||||
this.$emit('success', { order: orderData, server: serverData });
|
||||
|
||||
this.paymentSuccess = true;
|
||||
}
|
||||
|
||||
@ -411,7 +411,7 @@ def create_server_order(**kwargs):
|
||||
import random
|
||||
order_id = datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3] + ''.join(random.choices('0123456789', k=6))
|
||||
|
||||
# 创建订单
|
||||
# 创建订单记录
|
||||
order = jingrow.get_pg({
|
||||
"pagetype": "Order",
|
||||
"order_id": order_id,
|
||||
@ -420,20 +420,28 @@ 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}个月",
|
||||
"server_config": {
|
||||
"plan_id": plan_id,
|
||||
"image_id": image_id,
|
||||
"period": period,
|
||||
"region_id": region_id,
|
||||
"monthly_price": monthly_price
|
||||
}
|
||||
"description": f"{selected_plan.get('core')}核/{selected_plan.get('memory')}GB/{selected_plan.get('disk_size')}GB, {period}个月"
|
||||
})
|
||||
|
||||
order.insert(ignore_permissions=True)
|
||||
|
||||
# 创建服务器记录
|
||||
server = jingrow.get_pg({
|
||||
"pagetype": "Jsite Server",
|
||||
"team": team.name,
|
||||
"status": "Pending",
|
||||
"region": region_id,
|
||||
"system_image": 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,
|
||||
"order_id": order_id
|
||||
})
|
||||
server.insert(ignore_permissions=True)
|
||||
|
||||
jingrow.db.commit()
|
||||
|
||||
return {"success": True, "order": order.as_dict()}
|
||||
return {"success": True, "order": order.as_dict(), "server": server.as_dict()}
|
||||
|
||||
except Exception as e:
|
||||
jingrow.log_error("创建服务器订单失败", str(e))
|
||||
@ -446,12 +454,16 @@ def create_server_async(order_name):
|
||||
if not order:
|
||||
raise Exception("订单不存在")
|
||||
|
||||
# 获取配置
|
||||
config = order.server_config or {}
|
||||
plan_id = config.get('plan_id')
|
||||
image_id = config.get('image_id')
|
||||
period = config.get('period', 1)
|
||||
region_id = config.get('region_id', 'cn-shanghai')
|
||||
# 查找对应的服务器记录(通过订单ID)
|
||||
server = jingrow.get_pg("Jsite Server", {"order_id": order.order_id})
|
||||
if not server:
|
||||
raise Exception("找不到对应的服务器记录")
|
||||
|
||||
# 从服务器记录中获取配置信息
|
||||
region_id = server.region or 'cn-shanghai'
|
||||
image_id = server.system_image or 'e9363571cf2444aba422b17470285465'
|
||||
plan_id = server.planid or 'swas.s.c2m1s30b1.linux'
|
||||
period = server.period or 1
|
||||
|
||||
# 调用阿里云API创建实例
|
||||
result = create_aliyun_instance(plan_id, image_id, period, region_id)
|
||||
@ -461,30 +473,13 @@ def create_server_async(order_name):
|
||||
|
||||
instance_id = result['data']['instance_id']
|
||||
|
||||
# 创建服务器记录
|
||||
server = jingrow.get_pg({
|
||||
"pagetype": "Jsite Server",
|
||||
"instance_id": instance_id,
|
||||
"team": order.team,
|
||||
"order": order.name,
|
||||
"status": "Running",
|
||||
"region_id": region_id,
|
||||
"plan_id": plan_id,
|
||||
"image_id": image_id,
|
||||
"period": period,
|
||||
"monthly_price": config.get('monthly_price', 0),
|
||||
"total_amount": order.total_amount,
|
||||
"payment_method": order.payment_method,
|
||||
"created_at": jingrow.utils.now(),
|
||||
"expires_at": jingrow.utils.add_months(jingrow.utils.nowdate(), period)
|
||||
})
|
||||
|
||||
server.insert(ignore_permissions=True)
|
||||
# 更新服务器记录状态
|
||||
server.status = "Active"
|
||||
server.instance_id = instance_id
|
||||
server.save(ignore_permissions=True)
|
||||
|
||||
# 更新订单状态
|
||||
order.status = "交易成功"
|
||||
order.instance_id = instance_id
|
||||
order.server_record = server.name
|
||||
order.save(ignore_permissions=True)
|
||||
|
||||
jingrow.db.commit()
|
||||
@ -493,9 +488,4 @@ def create_server_async(order_name):
|
||||
|
||||
except Exception as e:
|
||||
jingrow.log_error("服务器创建失败", f"订单 {order_name}: {str(e)}")
|
||||
# 更新订单状态为失败
|
||||
try:
|
||||
jingrow.db.set_value("Order", order_name, "status", "创建失败")
|
||||
except:
|
||||
pass
|
||||
raise e
|
||||
@ -9,19 +9,21 @@
|
||||
"team",
|
||||
"column_break_4",
|
||||
"status",
|
||||
"plan",
|
||||
"order_id",
|
||||
"server_section",
|
||||
"instance_id",
|
||||
"cpu",
|
||||
"disk_size",
|
||||
"region",
|
||||
"system_image",
|
||||
"planid",
|
||||
"column_break_aliyun",
|
||||
"end_date",
|
||||
"memory",
|
||||
"bandwidth",
|
||||
"ip",
|
||||
"running_status",
|
||||
"period",
|
||||
"ssh_section",
|
||||
"ssh_user",
|
||||
"ssh_port",
|
||||
@ -55,12 +57,6 @@
|
||||
"label": "团队",
|
||||
"options": "Team"
|
||||
},
|
||||
{
|
||||
"fieldname": "plan",
|
||||
"fieldtype": "Link",
|
||||
"label": "计划",
|
||||
"options": "Server Plan"
|
||||
},
|
||||
{
|
||||
"fetch_from": "virtual_machine.public_ip_address",
|
||||
"fieldname": "ip",
|
||||
@ -166,11 +162,31 @@
|
||||
"in_list_view": 1,
|
||||
"label": "运行状态",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "order_id",
|
||||
"fieldtype": "Data",
|
||||
"label": "订单ID",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "planid",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "套餐ID",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "period",
|
||||
"fieldtype": "Int",
|
||||
"hidden": 1,
|
||||
"label": "购买时长(月)",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2025-07-26 13:27:00.795541",
|
||||
"modified": "2025-07-27 22:04:39.820405",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Jcloud",
|
||||
"name": "Jsite Server",
|
||||
|
||||
@ -21,7 +21,9 @@ class JsiteServer(Document):
|
||||
instance_id: DF.Data | None
|
||||
ip: DF.Data | None
|
||||
memory: DF.Data | None
|
||||
plan: DF.Link | None
|
||||
order_id: DF.Data | None
|
||||
period: DF.Int
|
||||
planid: DF.Data | None
|
||||
region: DF.Data | None
|
||||
root_public_key: DF.Code | None
|
||||
running_status: DF.Data | None
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user