|
|
@@ -4,6 +4,7 @@ declare (strict_types=1);
|
|
|
namespace app\model\api;
|
|
|
|
|
|
use library\basic\BaseModel;
|
|
|
+use think\facade\Cache;
|
|
|
use think\Model;
|
|
|
|
|
|
/**
|
|
|
@@ -183,4 +184,79 @@ class RechargeOrder extends BaseModel
|
|
|
'update_time' => time()
|
|
|
]);
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 增加用户积分(内部调用)
|
|
|
+ * @param int $uid 用户ID
|
|
|
+ * @param int $totalIntegral 总积分
|
|
|
+ * @param string $orderSn 订单号
|
|
|
+ * @param float $price 充值金额
|
|
|
+ * @param int $orderId 订单ID
|
|
|
+ * @return bool
|
|
|
+ */
|
|
|
+ private function addUserIntegral($uid, $totalIntegral, $orderSn, $price, $orderId)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $userModel = new User();
|
|
|
+ $user = $userModel->where('uid', $uid)->find();
|
|
|
+
|
|
|
+ if ($user) {
|
|
|
+ // 更新用户积分和累计充值金额
|
|
|
+ $userModel->where('uid', $uid)->inc('score', $totalIntegral)->inc('score_in', $totalIntegral)->update();
|
|
|
+
|
|
|
+ // 记录积分明细
|
|
|
+ $scoreDetail = new UserScoreDetail();
|
|
|
+ $scoreDetail->incomeScore($uid, $totalIntegral, $orderSn, 'income_score', [
|
|
|
+ 'o_id' => $orderId
|
|
|
+ ], $orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 清除用户折扣缓存,以便下次充值生成新的折扣金额
|
|
|
+ Cache::store('redis')->delete('recharge_discount_' . $uid);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ // 将错误信息保存到 quanju.txt 文件
|
|
|
+ @file_put_contents('quanju.txt', $e->getLine() . $e->getMessage() . $e->getFile() . "-增加用户积分报错内容\r\n", 8);
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 充值成功回调处理(内部调用)
|
|
|
+ * @param string $orderSn 订单号
|
|
|
+ * @param string $paySn 支付流水号
|
|
|
+ * @param string $payJson 支付返回信息
|
|
|
+ * @return bool
|
|
|
+ */
|
|
|
+ public function paySuccess($orderSn, $paySn, $payJson = '')
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $rechargeOrder = new RechargeOrder();
|
|
|
+ $orderInfo = $rechargeOrder->getByOrderSn($orderSn);
|
|
|
+
|
|
|
+ if (!$orderInfo) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新订单支付状态
|
|
|
+ $updateResult = $rechargeOrder->updatePayStatus($orderSn, $paySn, $payJson);
|
|
|
+
|
|
|
+ if (!$updateResult) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 增加用户积分
|
|
|
+ $this->addUserIntegral($orderInfo['uid'], $orderInfo['total_integral'], $orderSn, $orderInfo['price'], $orderInfo['id']);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ // 将错误信息保存到 quanju.txt 文件
|
|
|
+// $logMessage = date('Y-m-d H:i:s') . " [paySuccess Error] OrderSn: {$orderSn}, PaySn: {$paySn}, Error: " . $e->getMessage() . "\n";
|
|
|
+// file_put_contents('quanju.txt', $logMessage, FILE_APPEND);
|
|
|
+ @file_put_contents('quanju.txt', $e->getLine() . $e->getMessage() . $e->getFile() . "-充值完成报错内容\r\n", 8);
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|