89 lines
3.3 KiB
PHP
89 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace Modules\User\Http\Resources;
|
|
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
use Jason\Api\Api;
|
|
use Modules\User\Models\Order;
|
|
|
|
class UserIdentityResource extends JsonResource
|
|
{
|
|
public function toArray($request): array
|
|
{
|
|
$user = Api::user();
|
|
$open = $renew = false;
|
|
$text = '立即开通';
|
|
$price = $this->getCondition('price', '0');
|
|
$cost = $this->getCondition('cost', '0');
|
|
$identityName = $this->name;
|
|
$coupon_price = 0;
|
|
$reopen = false;//是否需要重新提交凭证
|
|
$identityOrder = '';
|
|
|
|
if ($user) {
|
|
$identity = $user->identityFirst();
|
|
if ($identity) {
|
|
//当前身份 可以续费
|
|
if ($identity->id == $this->id) {
|
|
$renew = (bool) $identity->years;
|
|
$text = '续费';
|
|
} elseif ($identity->order > $this->order) {
|
|
$text = '不可降级';
|
|
} else {
|
|
$identityOrder = Order::ByUser($user)
|
|
->where('identity_id', $this->id)
|
|
->first();
|
|
|
|
if ($identityOrder && $identityOrder->state == Order::STATE_INIT) {
|
|
$text = '等待审核';
|
|
} elseif ($identityOrder && $identityOrder->state == Order::STATE_REJECT) {
|
|
$text = '驳回申请';
|
|
$reopen = true;
|
|
} else {
|
|
$open = true;
|
|
}
|
|
|
|
}
|
|
} else {
|
|
$open = true;
|
|
}
|
|
}
|
|
|
|
return [
|
|
'identity_id' => $this->id,
|
|
'name' => $identityName,
|
|
'stock' => $this->stock,
|
|
'years' => $this->years,
|
|
'times' => $this->when($user && $this->id == $user->identityFirst()->id, function () use ($user) {
|
|
return new IdentityMiddleResource($user->identityMiddle()->first());
|
|
}, [
|
|
'name' => '---',
|
|
'serial' => '---',
|
|
'started_at' => '---',
|
|
'ended_at' => '---',
|
|
]),
|
|
'cover' => $this->cover_url,
|
|
'order' => $this->order,
|
|
'description' => $this->description ?? "",
|
|
'coupon_price' => floatval($coupon_price),//开通金额
|
|
'cost' => floatval($cost),//开通金额
|
|
'price' => floatval($price),//开通金额
|
|
'can' => [
|
|
'buy' => (bool) $this->can_buy,
|
|
'open' => $this->can_buy ? $open : false,//开通
|
|
'renew' => $this->can_buy ? $renew : false,//续费
|
|
're_open' => $reopen,
|
|
],
|
|
'identity_order' => $this->when($identityOrder, function () use ($identityOrder) {
|
|
return new UserOrderResource($identityOrder);
|
|
}),
|
|
'buttonText' => $text,
|
|
'rights' => $this->rights,
|
|
'rules' => $this->getRules(),
|
|
'not_rules' => $this->getNotRules(),
|
|
'is_open' => $user && $this->id == $user->identityFirst()->id
|
|
];
|
|
}
|
|
|
|
}
|