<?php
|
namespace app\api\model\plus\business;
|
|
use app\api\service\order\PaymentService;
|
use app\api\service\order\paysuccess\type\BusinessCardPaySuccessService;
|
use app\common\enum\order\OrderTypeEnum;
|
use app\common\model\plus\business\Order as BaseOrder;
|
use app\common\enum\order\OrderPayStatusEnum;
|
use app\common\enum\order\OrderPayTypeEnum;
|
use app\common\model\plus\business\Business as BusinessModel;
|
|
/**
|
* 名片订单模型
|
*/
|
class Order extends BaseOrder
|
{
|
public static function getDetail($orderId)
|
{
|
return (new static())->where('order_id', '=', $orderId)->find();
|
}
|
|
/**
|
* 检查用户是否已购买名片
|
*/
|
public function checkCardPurchase($userId, $businessCardId)
|
{
|
if (!$userId) {
|
return false;
|
}
|
|
// 查询购买记录
|
$count = $this
|
->where('user_id', '=', $userId)
|
->where('business_card_id', '=', $businessCardId)
|
->where('pay_status', '=', 20) // 20表示已支付
|
->count();
|
|
return $count > 0;
|
}
|
|
/**
|
* 获取订单支付详情
|
*/
|
public static function getPayDetail($orderNo)
|
{
|
return (new static())->where(['order_no' => $orderNo])->find();
|
}
|
|
public function orderPayment($user, $order, $payType, $params)
|
{
|
$payment = [];
|
if ($params['use_balance'] == 1) {
|
$payment = $this->onPaymentByBalance($user, $order);
|
}elseif ($payType == OrderPayTypeEnum::POINTS) {
|
$payment = $this->onPaymentByPoints($user, $order);
|
} elseif ($payType == OrderPayTypeEnum::WECHAT) {
|
$payment = $this->onPaymentByWechat($user, $order);
|
} else {
|
return false;
|
}
|
if (!$payment) {
|
return false;
|
}
|
$result['order_id'] = $order['order_id'];
|
$result['payType'] = $payType;
|
$result['payment'] = $payment;
|
return $result;
|
}
|
|
/**
|
* 构建微信支付请求
|
*/
|
public function onPaymentByWechat($user, $order)
|
{
|
return PaymentService::wechat(
|
$user,
|
$order['order_no'],
|
$order['order_no'],
|
$order['pay_price'],
|
OrderTypeEnum::BUSINESS_CARD
|
);
|
}
|
|
/**
|
* 构建余额支付请求
|
*/
|
public function onPaymentByBalance($user, $order)
|
{
|
// 获取订单详情
|
$PaySuccess = new BusinessCardPaySuccessService($order['order_no']);
|
// 发起余额支付
|
$result = $PaySuccess->onPaySuccess(OrderPayTypeEnum::BALANCE);
|
if (!$result) {
|
$this->error = $PaySuccess->getError() ?: '余额支付失败';
|
}
|
return $result;
|
}
|
/**
|
* 构建联盟币支付请求
|
*/
|
public function onPaymentByPoints($user, $order)
|
{
|
// 获取订单详情
|
$PaySuccess = new BusinessCardPaySuccessService($order['order_no']);
|
// 发起联盟币支付
|
$result = $PaySuccess->onPaySuccess(OrderPayTypeEnum::POINTS);
|
if (!$result) {
|
$this->error = $PaySuccess->getError() ?: '联盟币支付失败';
|
}
|
return $result;
|
}
|
|
}
|