UNPKG

koishi-plugin-pay-tool

Version:

适用于Koishi框架的易支付工具插件,支持订单创建、查询、退款、分配等功能

107 lines (106 loc) 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OrderDatabase = void 0; exports.setupDatabase = setupDatabase; /** * 初始化数据库表 */ function setupDatabase(ctx) { ctx.model.extend('pay_orders', { id: 'unsigned', trade_no: 'string', out_trade_no: 'string', user_id: 'string', guild_id: 'string', channel_id: 'string', amount: 'string', payment_type: 'string', status: 'string', customer_qq: 'string', // 订单归属人QQ号(管理员分配) created_at: 'timestamp', updated_at: 'timestamp' }, { primary: 'id', autoInc: true }); } /** * 订单数据库操作类 */ class OrderDatabase { constructor(ctx) { this.ctx = ctx; } /** * 创建订单记录 */ async createOrder(tradeNo, outTradeNo, userId, guildId, channelId, amount, paymentType) { await this.ctx.database.create('pay_orders', { trade_no: tradeNo, out_trade_no: outTradeNo, user_id: userId, guild_id: guildId, channel_id: channelId, amount, payment_type: paymentType, status: 'pending', customer_qq: '', // 初始化为空,可通过provisioning命令分配 created_at: new Date(), updated_at: new Date() }); } /** * 根据商户订单号查询订单 */ async getOrderByOutTradeNo(outTradeNo) { const orders = await this.ctx.database.get('pay_orders', { out_trade_no: outTradeNo }); return orders.length > 0 ? orders[0] : null; } /** * 根据易支付订单号查询订单 */ async getOrderByTradeNo(tradeNo) { const orders = await this.ctx.database.get('pay_orders', { trade_no: tradeNo }); return orders.length > 0 ? orders[0] : null; } /** * 更新订单状态 */ async updateOrderStatus(outTradeNo, status) { await this.ctx.database.set('pay_orders', { out_trade_no: outTradeNo }, { status, updated_at: new Date() }); } /** * 获取用户的订单列表 */ async getUserOrders(userId, limit = 10) { return await this.ctx.database .select('pay_orders') .where({ user_id: userId }) .orderBy('created_at', 'desc') .limit(limit) .execute(); } /** * 更新订单归属人 */ async updateCustomerQQ(outTradeNo, customerQQ) { await this.ctx.database.set('pay_orders', { out_trade_no: outTradeNo }, { customer_qq: customerQQ, updated_at: new Date() }); } /** * 根据归属人QQ查询订单 */ async getOrdersByCustomerQQ(customerQQ) { return await this.ctx.database .select('pay_orders') .where({ customer_qq: customerQQ }) .orderBy('created_at', 'desc') .execute(); } } exports.OrderDatabase = OrderDatabase;