pay_vip.js 1.63 KB
async function getVipOrder(connection, uId, label) {
  // 获取订单
  const resCount = await connection.queryAsync(
    'SELECT id,`order`,sk_number,pay_id,sk_num,sk_time FROM ct_user_sk_order WHERE u_id=? AND checkinfo=0 ORDER BY add_time DESC LIMIT 0,1',
    [uId]
  );

  if (!resCount || !resCount[0] || !resCount[0]['id']) {
    logger.warn(
      `【${label}${logUidAndTradeNo},该订单不存在或已支付,resCount${JSON.stringify(resCount)}`
    );
    return;
  }

  return resCount;
}

async function updateVipOrder(connection, uId, order) {
  const orderNo = order['order'].replace('wxpay', 'wxpaymini');
  const today = new Date();
  const nowTime = +today / 1000;
  today.setMonth(today.getMonth() + order['sk_time']);
  const endTime = +today / 1000;
  const orderId = order['id'];
  const skLevel = order['pay_id'];
  const skNum = order['sk_num'];
  const skNo = order['sk_number'];

  // 事务开始
  await connection.beginTransactionAsync();
  // 更新语句
  const updateUserRes = await connection.queryAsync(
    'UPDATE ct_user SET sk_level=?,sk_num=?,sk_start_time=?,sk_end_time=?,foor_number=? WHERE uid=?',
    [skLevel, skNum, parseInt(nowTime), parseInt(endTime), skNo, uId]
  );

  const updateOrderRes = await connection.queryAsync(
    'UPDATE ct_user_sk_order SET `order`=?,pay_type=5,checkinfo=1,update_time=?,pay_time=?,`state`=1 WHERE id=?',
    [orderNo, new Date(), new Date(), orderId]
  );

  // 提交事务
  await connection.commitAsync();
  // 更新结果
  return updateOrderRes.affectedRows > 0 && updateUserRes.affectedRows > 0;
}

exports.updateVipOrder = updateVipOrder;
exports.getVipOrder = getVipOrder;