38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
|
|
const { query } = require('../config/database')
|
||
|
|
|
||
|
|
async function bindOpenId(ctx) {
|
||
|
|
const { userId, openid } = ctx.request.body
|
||
|
|
if (!userId || !openid) {
|
||
|
|
ctx.body = { code: 400, message: '缺少参数' }
|
||
|
|
return
|
||
|
|
}
|
||
|
|
await query('UPDATE users SET openid = ? WHERE id = ?', [openid, userId])
|
||
|
|
ctx.body = { code: 200, message: '绑定成功' }
|
||
|
|
}
|
||
|
|
|
||
|
|
async function notifyOrder(ctx) {
|
||
|
|
const { orderId } = ctx.request.body
|
||
|
|
const orders = await query(
|
||
|
|
'SELECT o.*, u.openid FROM orders o LEFT JOIN users u ON o.user_id = u.id WHERE o.id = ?',
|
||
|
|
[orderId]
|
||
|
|
)
|
||
|
|
if (!orders.length) {
|
||
|
|
ctx.body = { code: 404, message: '订单不存在' }
|
||
|
|
return
|
||
|
|
}
|
||
|
|
const order = orders[0]
|
||
|
|
if (!order.openid) {
|
||
|
|
ctx.body = { code: 400, message: '用户未绑定微信' }
|
||
|
|
return
|
||
|
|
}
|
||
|
|
try {
|
||
|
|
const { sendOrderStatusNotification } = require('../utils/wechat')
|
||
|
|
const result = await sendOrderStatusNotification(order.openid, order.id, order.status, order.total_price)
|
||
|
|
ctx.body = { code: 200, data: result }
|
||
|
|
} catch (e) {
|
||
|
|
ctx.body = { code: 500, message: e.message }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { bindOpenId, notifyOrder }
|