<?php
|
|
namespace app\api\controller\supplier;
|
|
use app\api\controller\Controller;
|
use app\api\model\supplier\member\Plan as MemberPlanModel;
|
use app\api\service\order\paysuccess\type\SupplierMemberPaySuccessService;
|
use app\common\enum\user\balanceLog\BalanceLogSceneEnum;
|
use app\common\model\app\App as AppModel;
|
use app\common\model\supplier\Supplier as SupplierModel;
|
use app\common\model\user\BalanceLog as BalanceLogModel;
|
use app\common\service\supplier\MemberService;
|
use app\api\model\supplier\member\Order as MemberOrderModel;
|
use app\common\enum\order\OrderPayTypeEnum;
|
use app\api\service\order\PaymentService;
|
use app\common\enum\order\OrderTypeEnum;
|
|
/**
|
* 供应商年卡控制器
|
*/
|
class Member extends Controller
|
{
|
/**
|
* 获取年卡套餐列表
|
*/
|
public function plans()
|
{
|
$plans = (new MemberPlanModel())->getEnabledPlans();
|
return $this->renderSuccess('',compact('plans'));
|
}
|
/**
|
* 获取年卡套餐列表(包含默认年卡)
|
*/
|
public function plansAll()
|
{
|
$plans = (new MemberPlanModel())->getEnabledPlansAll();
|
return $this->renderSuccess('',compact('plans'));
|
}
|
|
/**
|
* 创建年卡订单
|
*/
|
public function createOrder()
|
{
|
$planId = $this->request->post('plan_id');
|
$user = $this->getUser();
|
$supplier = $this->getSupplierUser($user);
|
$supplierId = $supplier['shop_supplier_id'];
|
|
$memberService = new MemberService();
|
$result = $memberService->createOrder($supplierId, $planId, $user);
|
|
if (!$result['status']) {
|
return $this->renderError($result['msg']);
|
}
|
|
return $this->renderSuccess( '创建订单成功',['order' => $result['data']]);
|
}
|
|
/**
|
* 构建支付请求
|
*/
|
public function pay()
|
{
|
// 获取订单信息
|
$param = $this->request->param();
|
|
// 获取用户信息
|
$user = $this->getUser();
|
$supplier = $this->getSupplierUser($user);
|
$supplierId = $supplier['shop_supplier_id'];
|
|
// 获取订单详情
|
$order = MemberOrderModel::detail($param['order_id']);
|
if (!$order) {
|
return $this->renderError('订单不存在');
|
}
|
|
// 检查订单是否已支付
|
if ($order['pay_status'] == 20) {
|
return $this->renderError('订单已支付');
|
}
|
if ($this->request->isGet()) {
|
// 开启的支付类型
|
$payTypes = AppModel::getPayType($supplier['app_id'], $param['pay_source']);
|
// 支付金额
|
$payPrice = $order['price'];
|
$balance = $user['balance'];
|
return $this->renderSuccess('', compact('payTypes', 'payPrice', 'balance'));
|
}
|
// 更新支付方式
|
$order->save(['pay_type' => $param['payType']]);
|
|
// 余额支付
|
if ($param['use_balance'] == 1 || $param['payType'] == OrderPayTypeEnum::BALANCE) {
|
// 检查余额是否足够
|
if ($user['balance'] < $order['price']) {
|
return $this->renderError('余额不足');
|
}
|
|
$SupplierMemberPaySuccessService = new SupplierMemberPaySuccessService($order['order_no']);
|
$SupplierMemberPaySuccessService->onPaySuccess(10, []);
|
$memberService = new MemberService();
|
$memberService->activateMember($param['order_id']);
|
return $this->renderSuccess('支付成功', [
|
'order_id' => $param['order_id'],
|
'pay_type' => OrderPayTypeEnum::BALANCE,
|
]);
|
}
|
|
// 其他支付方式 (微信、支付宝等)
|
$payment = PaymentService::orderPayment(
|
$supplier['user'],
|
$order,
|
$param['payType']
|
);
|
// 支付类型
|
$payTypes = [20, 30]; // 微信支付和支付宝支付
|
if ($supplier['balance'] > 0) {
|
$payTypes[] = 10; // 余额支付
|
}
|
|
return $this->renderSuccess('支付信息获取成功', [
|
'order_id' => $param['order_id'],
|
'pay_type' => $param['payType'],
|
'payment' => $payment,
|
'payTypes' => $payTypes,
|
'payPrice' => $order['price'],
|
'balance' => $supplier['balance']
|
]);
|
}
|
|
/**
|
* 支付成功回调
|
*/
|
public function payNotify()
|
{
|
$orderId = $this->request->post('order_id');
|
|
$memberService = new MemberService();
|
$result = $memberService->activateMember($orderId);
|
|
if (!$result) {
|
return $this->renderError('激活年卡失败');
|
}
|
|
return $this->renderSuccess([], '年卡激活成功');
|
}
|
|
/**
|
* 获取当前供应商年卡信息
|
*/
|
public function info()
|
{
|
$user = $this->getUser();
|
$supplier = $this->getSupplierUser($user);
|
$supplierId = $supplier['shop_supplier_id'];
|
|
$supplier = SupplierModel::detail($supplierId);
|
$member = $supplier->getCurrentMember();
|
|
return $this->renderSuccess(compact('member'));
|
}
|
|
/**
|
* 检查权限
|
*/
|
public function checkPermission()
|
{
|
$permission = $this->request->post('permission');
|
$user = $this->getUser();
|
$supplier = $this->getSupplierUser($user);
|
$supplierId = $supplier['shop_supplier_id'];
|
|
$memberService = new MemberService();
|
$hasPermission = $memberService->checkPermission($supplierId, $permission);
|
|
return $this->renderSuccess(['has_permission' => $hasPermission]);
|
}
|
}
|