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,19 @@
<?php
namespace Modules\User\Http\Resources\Account;
use Illuminate\Http\Resources\Json\JsonResource;
class CrystalResource extends JsonResource
{
public function toArray($request): array
{
return [
'log_id' => $this->id,
'title' => $this->rule->title,
'amount' => $this->amount,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\User\Http\Resources\Account;
use App\Api\Resources\BaseCollection;
class UserAccountLogCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($log) {
return new UserAccountLogResource($log);
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Modules\User\Http\Resources\Account;
use Illuminate\Http\Resources\Json\JsonResource;
class UserAccountLogResource extends JsonResource
{
public function toArray($request): array
{
return [
'user_account_log_id' => $this->id,
'frozen' => [
'value' => $this->frozen,
'text' => $this->frozen ? '待发放' : '已发放',
],
'rule' => [
'rule_id' => $this->rule->id,
'name' => $this->rule->name,
'title' => $this->rule->title,
'remark' => $this->rule->remark,
],
'remark' => $this->source['remark'] ?? $this->rule->remark,
'amount' => $this->amount > 0 ? '+'.floatval($this->amount) : floatval($this->amount),
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\User\Http\Resources\Account;
use Illuminate\Http\Resources\Json\JsonResource;
class UserAccountResource extends JsonResource
{
public function toArray($request): array
{
return [
'balance' => floatval($this->balance),//现金
'score' => [
'surplus' => floatval($this->score),//水滴余量
'use' => 0,//水滴使用
'plan' => 300,//水滴赠送
],
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\User\Http\Resources\Favorite;
use App\Api\Resources\BaseCollection;
class FavoriteCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($info) {
return new FavoriteResource($info);
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\User\Http\Resources\Favorite;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Cms\Http\Resources\ArticleBaseResource;
class FavoriteResource extends JsonResource
{
public function toArray($request): array
{
return [
'favorite_id' => $this->id,
'favoriteable' => new ArticleBaseResource($this->favoriteable)
];
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\User\Http\Resources;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class IdentityMiddleResource extends JsonResource
{
public function toArray($request): array
{
if ($this->identity->order == 1) {
$ended_at = '---';
} else {
$ended_at = $this->identity->years ? Carbon::parse($this->ended_at)->format('Y-m-d') : '永久';
}
return [
'name' => $this->identity->name,
'serial' => $this->identity->serial_prefix.$this->serial,
'started_at' => $this->started_at ?? '',
'ended_at' => $ended_at,
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class RelationResource extends JsonResource
{
public function toArray($request): array
{
return [
'user_id' => $this->user->id,
// 'username' => substr_replace($this->user->username, '****', 3, 4),
'username' => $this->user->username,
'nickname' => $this->user->info->nickname ?? '',
'avatar' => $this->user->info->avatar ?? '',
'sex' => $this->user->case ? $this->user->case->sex_text : '--',
'identity' => new UserIdentityBaseResource($this->user->identities->first()),
'created_at' => (string) $this->user->created_at,
];
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Modules\User\Http\Resources\Sign;
use Illuminate\Http\Resources\Json\JsonResource;
class SignBannerResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'cover' => $this->cover_url,
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\User\Http\Resources\Sign;
use Illuminate\Http\Resources\Json\JsonResource;
class SignTextResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'h1' => $this->description,
'h2' => $this->sub_description,
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
class UserCertificationResource extends JsonResource
{
public function toArray($request): array
{
return [
'certification_id' => $this->id,
'name' => $this->name,
'verified' => (bool) $this->verified,
'id_card' => $this->id_card,
'front_card' => $this->when($this->front_card, function () {
return Storage::url($this->front_card);
}),
'back_card' => $this->when($this->back_card, function () {
return Storage::url($this->back_card);
}),
'created_at' => (string) $this->created_at,
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserIdentityBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
'order' => $this->order,
];
}
}

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
];
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
class UserIdentityRightsResource extends JsonResource
{
public function toArray($request): array
{
$rights = $this->rights;
$data = [];
if ($rights){
for ($i = 1; $i <= count($rights); $i++) {
$data[$i] = [
'name' => $rights['new_'.$i]['name'] ?? '',
'cover' => ! empty($rights['new_'.$i]['cover']) ? Storage::url($rights['new_'.$i]['cover']) : '',
'order' => $rights['new_'.$i]['order'] ?? '',
'remark' => $rights['new_'.$i]['remark'] ?? '',
];
}
}
return [
'identity_id' => $this->id,
'name' => $this->name,
'cover' => $this->cover_url,
'order' => $this->order,
'rights' => $data,
];
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserInfoBaseResource extends JsonResource
{
public function toArray($request): array
{
return [
'user_id' => $this->id,
'username' => $this->username,
'nickname' => $this->info->nickname ?? '',
'avatar' => $this->info->avatar ?? '',
'sign' => $this->getSignData(),
'identity' => new UserIdentityBaseResource($this->identities->first()),
'status' => $this->getStateData(),
'canPick' => $this->canPick(),
'nowStatus' => $this->getNowStatus(),
'tag' => $this->tag
];
}
}

View File

@@ -0,0 +1,60 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Jason\Api\Api;
use Modules\Mall\Models\Order;
use Modules\Mall\Models\Refund as RefundModel;
use Modules\User\Http\Resources\Account\UserAccountResource;
use Modules\User\Models\Identity;
use Vinkla\Hashids\Facades\Hashids;
class UserInfoResource extends JsonResource
{
public function toArray($request): array
{
$identity = $this->identityFirst();
if ($identity->id > 2) {
$order = true;
} else {
$order = false;
}
return [
'user_id' => $this->id,
'username' => $this->username,
'nickname' => $this->info->nickname ?? '',
'avatar' => $this->info->avatar ?? '',
'account' => new UserAccountResource($this->account),
'identity' => new UserIdentityBaseResource($identity),
'service' => new UserServiceResource($identity->identities()->first()),
'water_mobile' => app('Conf_mall')['water_mobile'] ?? '',
'invite' => Hashids::connection('code')->encode($this->id),
'case' => $this->getStockData(),
'user_wechat' => new UserWechatResource($this->wechat),
'created_at' => (string) $this->created_at,
'sign' => $this->getSignData(),
'status' => $this->getStateData(),
'nowStatus' => $this->getNowStatus(),
'canPick' => $this->canPick(),
'count' => [
'coupon' => $this->couponGrants()->count(),//<2F>Ż<EFBFBD>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD>
'relation' => $this->getRelationCount(),//<2F>¼<EFBFBD>
'invites' => $this->invites()->count(),//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'notifications' => $this->unreadNotifications()->count(),//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
'orders' => Order::byUser(Api::user())->common()->count(),//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'refunds' => RefundModel::byUser(Api::user())->count(),//<2F>˿<CBBF><EEB5A5><EFBFBD><EFBFBD>
],
'identityShow' => $this->when(true, function () use ($identity) {
return [
'right' => new UserIdentityRightsResource($identity),
'times' => new IdentityMiddleResource($this->identityMiddle()->first()),
'is_top' => $identity->id == 4,
];
}),
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserServiceResource extends JsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'code' => $this->cover_url,
'mobile' => $this->mobile,
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\User\Http\Resources;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\User\Facades\UserSign;
class UserSignResource extends JsonResource
{
public function toArray($request): array
{
return [
'continue_days' => $this->continue_days,
'counts' => $this->counts,
'last_sign_at' => (string) $this->last_sign_at,
'today_signed' => !UserSign::canSign($this->user, Carbon::today()),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\User\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserWechatResource extends JsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'unionid' => $this->unionid,
'nickname' => $this->nickname,
'avatar' => $this->avatar,
'mini' => $this->mini,
'official' => $this->official,
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Modules\User\Http\Resources\stock;
use App\Api\Resources\BaseCollection;
class UserStockLogCollection extends BaseCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection->map(function ($log) {
return new UserStockLogResource($log);
}),
'page' => $this->page(),
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Modules\User\Http\Resources\stock;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class UserStockLogResource extends JsonResource
{
public function toArray($request): array
{
return [
'user_stock_log_id' => $this->id,
'variable' => $this->variable,
'type' => $this->type_text,
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
];
}
}