This commit is contained in:
2023-03-08 09:16:04 +08:00
commit e78454540f
1318 changed files with 210569 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Jason\Api\Api;
use Modules\Coupon\Models\Coupon;
use Modules\Coupon\Traits\WithCoupon;
use Modules\User\Models\Identity;
use Modules\User\Models\Order;
class UserIdentityResource extends JsonResource
{
use WithCoupon;
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;
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)
->where('state', Order::STATE_INIT)
->first();
if ($identityOrder) {
$text = '等待审核';
} else {
$open = true;
}
}
if ($this->job == Identity::JOB_JK) {
$openIdentity = Identity::find($this->id);
$coupons = $this->getCreateOrderCoupon($user, $openIdentity, 0);
if ($coupons->isNotEmpty()) {
$user_coupon = $coupons->first();
$coupon_price = $user_coupon->price;
if ($user_coupon->coupon->type == Coupon::TYPE_REDUCTION) {
$price = $price > $user_coupon->price ? bcsub($price, $coupon_price, 2) : 0;
}
}
}
if ($this->job == Identity::JOB_HH && $identity->job == Identity::JOB_HH) {
$star = $identity->getOriginal('pivot_star', 0);
if ($star > 0) {
$identityName = config('identity.stars.'.$star, '').$identityName;
}
}
} 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,//续费
],
'buttonText' => $text,
'rights' => $this->rights,
'rules' => $this->getRules(),
'not_rules' => $this->getNotRules(),
'is_open' => $user && $this->id == $user->identityFirst()->id
];
}
}