first commit
This commit is contained in:
27
app/Http/Controllers/AccountController.php
Normal file
27
app/Http/Controllers/AccountController.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\AccountLogResource;
|
||||
use App\Models\User;
|
||||
use AsLong\UserAccount\Models\UserAccountLog;
|
||||
|
||||
class AccountController extends Controller
|
||||
{
|
||||
/**
|
||||
* 收入明细
|
||||
*/
|
||||
public function logs()
|
||||
{
|
||||
$user = $this->user;
|
||||
|
||||
$list = UserAccountLog::where('user_id', $user->id)->paginate();
|
||||
|
||||
return AccountLogResource::collection($list)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 200,
|
||||
'cash' => $user->account->cash,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
53
app/Http/Controllers/ArticleController.php
Normal file
53
app/Http/Controllers/ArticleController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\ArticleListResource;
|
||||
use App\Http\Resources\ArticleResource;
|
||||
use App\Models\Article;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ArticleController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
|
||||
$policys = Article::where('status', 1)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->orderBy('created_at', 'desc')->paginate(10);
|
||||
|
||||
return ArticleListResource::collection($policys)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 200,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function show(Article $article)
|
||||
{
|
||||
return $this->success(new ArticleResource($article));
|
||||
}
|
||||
|
||||
//收藏
|
||||
public function favorite(Article $article)
|
||||
{
|
||||
if ($this->user->hasFavorited($article)) {
|
||||
$result = $this->user->unfavorite($article);
|
||||
$text = '取消收藏';
|
||||
} else {
|
||||
$result = $this->user->favorite($article);
|
||||
$text = '收藏';
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
return ['status_code' => 200, 'status' => 'SUCCESS', 'message' => $text . '成功', 'isFavorited' => $this->user->hasFavorited($article)];
|
||||
} else {
|
||||
return ['status_code' => 0, 'status' => 'ERROR', 'message' => $text . '失败', 'isFavorited' => $this->user->hasFavorited($article)];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
100
app/Http/Controllers/AuthController.php
Normal file
100
app/Http/Controllers/AuthController.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
|
||||
public function login_dd(Request $request)
|
||||
{
|
||||
$code = $request->code;
|
||||
|
||||
if (!$code) {
|
||||
return $this->failed('Must need CODE');
|
||||
}
|
||||
|
||||
$user = User::updateOrCreate(
|
||||
['openid' => $code],
|
||||
['session_key' => '$session_key']
|
||||
);
|
||||
|
||||
$token = Auth::guard('api')->login($user);
|
||||
return $this->success($this->withToken($token));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录认证
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-04-15T09:20:16+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
$code = $request->code;
|
||||
$parent_id = $request->parent_id ?? 0;
|
||||
$info = $request->userinfo;
|
||||
|
||||
if (!$code) {
|
||||
return $this->failed('Must need CODE');
|
||||
}
|
||||
|
||||
$app = app('wechat.mini_program');
|
||||
$session = $app->auth->session($code);
|
||||
|
||||
if ($session->errcode == 0) {
|
||||
$session_key = $session->session_key;
|
||||
$openid = $session->openid;
|
||||
$user = User::where('openid', $openid)->first();
|
||||
if (empty($info) && !$user) {
|
||||
return $this->failed('自动注册时必须传个人信息');
|
||||
}
|
||||
|
||||
$user = User::updateOrCreate(
|
||||
[
|
||||
'openid' => $openid,
|
||||
], [
|
||||
'session_key' => $session_key,
|
||||
'parent_id' => $parent_id,
|
||||
]
|
||||
);
|
||||
|
||||
if (!empty($info)) {
|
||||
$user->info()->update([
|
||||
'nickname' => $info['nickName'],
|
||||
'country' => $info['country'],
|
||||
'address' => $info['province'] . ' ' . $info['city'],
|
||||
'avatar' => $info['avatarUrl'],
|
||||
'sex' => $info['gender'],
|
||||
]);
|
||||
}
|
||||
|
||||
$token = Auth::guard('api')->login($user);
|
||||
|
||||
return $this->success($this->withToken($token));
|
||||
} else {
|
||||
return $this->failed('未识别的CODE');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回登录token
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-04-15T09:20:31+0800
|
||||
* @param [type] $token [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
protected function withToken($token)
|
||||
{
|
||||
return [
|
||||
'access_token' => $token,
|
||||
'access_type' => 'Bearer',
|
||||
'expires_in' => Auth::guard('api')->factory()->getTTL() * 60,
|
||||
];
|
||||
}
|
||||
}
|
||||
19
app/Http/Controllers/Controller.php
Normal file
19
app/Http/Controllers/Controller.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Helpers\ApiResponse;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, ApiResponse;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->user = \Auth::guard('api')->user();
|
||||
}
|
||||
}
|
||||
52
app/Http/Controllers/ExplainController.php
Normal file
52
app/Http/Controllers/ExplainController.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\ExplainListResource;
|
||||
use App\Http\Resources\ExplainResource;
|
||||
use App\Models\Explain;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ExplainController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
|
||||
$explains = Explain::where('status', 1)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->orderBy('created_at', 'desc')->paginate();
|
||||
|
||||
return ExplainListResource::collection($explains)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
public function show(Explain $explain)
|
||||
{
|
||||
return $this->success(new ExplainResource($explain));
|
||||
}
|
||||
|
||||
//收藏
|
||||
public function favorite(Explain $explain)
|
||||
{
|
||||
if ($this->user->hasFavorited($explain)) {
|
||||
$result = $this->user->unfavorite($explain);
|
||||
$text = '取消收藏';
|
||||
} else {
|
||||
$result = $this->user->favorite($explain);
|
||||
$text = '收藏';
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
return ['status_code' => 0, 'status' => 'SUCCESS', 'message' => $text . '成功', 'isFavorited' => $this->user->hasFavorited($explain)];
|
||||
} else {
|
||||
return ['status_code' => 400, 'status' => 'ERROR', 'message' => $text . '失败', 'isFavorited' => $this->user->hasFavorited($explain)];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
40
app/Http/Controllers/FavoriteController.php
Normal file
40
app/Http/Controllers/FavoriteController.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\FavoriteResource;
|
||||
use App\Models\Followable;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class FavoriteController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user = $this->user;
|
||||
$policys = Followable::mine()->where('followable_type', 'App\Models\Policy')->paginate();
|
||||
$articles = Followable::mine()->where('followable_type', 'App\Models\Article')->paginate();
|
||||
$explains = Followable::mine()->where('followable_type', 'App\Models\Explain')->paginate();
|
||||
|
||||
$data = [
|
||||
'policys' => FavoriteResource::collection($policys),
|
||||
'articles' => FavoriteResource::collection($articles),
|
||||
'explains' => FavoriteResource::collection($explains),
|
||||
];
|
||||
return [
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 0,
|
||||
'data' => $data,
|
||||
];
|
||||
|
||||
// $type = $request->type ?? 'Policy';
|
||||
|
||||
// $lists = Followable::mine()->where('followable_type', 'like', "%$type")->paginate();
|
||||
|
||||
// return FavoriteResource::collection($lists)->additional([
|
||||
// 'status' => 'SUCCESS',
|
||||
// 'status_code' => 0,
|
||||
// ]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
45
app/Http/Controllers/GoodsController.php
Normal file
45
app/Http/Controllers/GoodsController.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\GoodsListResource;
|
||||
use App\Http\Resources\GoodsResource;
|
||||
use App\Models\Goods;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class GoodsController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 首页数据
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-04-15T09:21:38+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$list = Goods::where('status', 1)->where('type', 1)->orderBy('price', 'desc')->paginate();
|
||||
|
||||
return GoodsListResource::collection($list)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
//开通会员
|
||||
public function vip()
|
||||
{
|
||||
$goods = Goods::where('status', 1)->where('type', 2)->first();
|
||||
if ($goods) {
|
||||
return $this->success(new GoodsResource($goods));
|
||||
} else {
|
||||
return $this->failed('没有找到升级产品');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function show(Goods $goods)
|
||||
{
|
||||
return $this->success(new GoodsResource($goods));
|
||||
}
|
||||
}
|
||||
28
app/Http/Controllers/IndexController.php
Normal file
28
app/Http/Controllers/IndexController.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\ArticleListResource;
|
||||
use App\Http\Resources\ExplainListResource;
|
||||
use App\Http\Resources\PolicyListResource;
|
||||
use App\Models\Article;
|
||||
use App\Models\Explain;
|
||||
use App\Models\Policy;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
$policys = Policy::where('status', 1)->orderBy('created_at', 'desc')->paginate(); //政策
|
||||
$extends = Explain::where('status', 1)->take(2)->orderBy('created_at', 'desc')->get(); //解读
|
||||
$articles = Article::where('status', 1)->take(2)->orderBy('created_at', 'desc')->get(); //资讯
|
||||
$data = [
|
||||
'policys' => PolicyListResource::collection($policys),
|
||||
'extends' => ExplainListResource::collection($extends),
|
||||
'articles' => ArticleListResource::collection($articles),
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
}
|
||||
241
app/Http/Controllers/OrderController.php
Normal file
241
app/Http/Controllers/OrderController.php
Normal file
@@ -0,0 +1,241 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\GoodsResource;
|
||||
use App\Http\Resources\OrderListResource;
|
||||
use App\Http\Resources\OrderResource;
|
||||
use App\Models\Goods;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderDetail;
|
||||
// use App\Utils\WXBizDataCrypt;
|
||||
use Illuminate\Http\Request;
|
||||
use Orders;
|
||||
use Validator;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 全部订单
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-04-15T09:21:38+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$list = Order::where('user_id', $this->user->id)
|
||||
->whereIn('state', [Order::ORDER_PAID])
|
||||
->orderBy('id', 'desc')
|
||||
->paginate();
|
||||
|
||||
return OrderListResource::collection($list)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 200,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
* @param $id
|
||||
* @return array
|
||||
*/
|
||||
public function show(Order $order)
|
||||
{
|
||||
return $this->success(new OrderResource($order));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
* @param $id
|
||||
* @return array
|
||||
*/
|
||||
public function cancel(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->cancel(2);
|
||||
return $this->success();
|
||||
} catch (\Exception $e) {
|
||||
return $this->failed('取消失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
private function orderPay($order, $payway)
|
||||
{
|
||||
|
||||
if ($payway == 'wxpay') {
|
||||
|
||||
if (!$order->canPay()) {
|
||||
throw new \Exception(" 当前订单不可支付" . $order->canPay());
|
||||
}
|
||||
// 创建支付订单
|
||||
$payment = $order->payment()->create([
|
||||
'type' => $payway,
|
||||
]);
|
||||
|
||||
$app = app('wechat.payment');
|
||||
|
||||
$result = $app->order->unify([
|
||||
'body' => '商品订单支付-' . $order->orderid,
|
||||
'out_trade_no' => $payment->out_trade_no,
|
||||
'total_fee' => $order->amount * 100,
|
||||
'notify_url' => route('order.notify'),
|
||||
'trade_type' => 'JSAPI',
|
||||
'openid' => $this->user->openid,
|
||||
]);
|
||||
|
||||
if ($result->result_code == 'SUCCESS') {
|
||||
$result['config'] = $app->jssdk->bridgeConfig($result->prepay_id, false);
|
||||
$result['order'] = $order;
|
||||
return $result;
|
||||
} else {
|
||||
throw new \Exception($result->err_code_des . 'skyxu');
|
||||
}
|
||||
} else {
|
||||
throw new \Exception("支付方式选择有误");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 单品立即购买
|
||||
* @param
|
||||
* @return array
|
||||
*/
|
||||
public function directBuy(Request $request)
|
||||
{
|
||||
$goodsID = $request->goods_id;
|
||||
$number = 1;
|
||||
|
||||
$goods = Goods::find($goodsID);
|
||||
|
||||
if (!$goods) {
|
||||
return $this->failed('商品包未找到或已下架');
|
||||
}
|
||||
|
||||
if ($goods->canOrder() !== true) {
|
||||
return $this->failed($goods->canOrder());
|
||||
}
|
||||
|
||||
$data['total'] = $goods->price * $number;
|
||||
$data['goods'] = new GoodsResource($goods);
|
||||
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 立即购买下单
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function directSave(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'goods_id' => 'required',
|
||||
'company' => 'required',
|
||||
'area' => 'required',
|
||||
'encryptedData' => 'required',
|
||||
'iv' => 'required',
|
||||
// 'code' => 'required',
|
||||
], [
|
||||
'goods_id.required' => '必须提交产品id',
|
||||
'company.required' => '请输入企业名称',
|
||||
'area.required' => '请输入企业注册地',
|
||||
'encryptedData.required' => '手机号获取失败',
|
||||
'iv.required' => '手机号获取失败',
|
||||
'code.required' => '手机号获取失败',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->failed($validator->errors()->first());
|
||||
}
|
||||
|
||||
$goodsID = $request->goods_id;
|
||||
$number = 1;
|
||||
$company = $request->company;
|
||||
$area = $request->area;
|
||||
$encryptedData = urldecode($request->encryptedData);
|
||||
$iv = urldecode($request->iv);
|
||||
$code = urldecode($request->code);
|
||||
|
||||
if ($iv == 'undefined') {
|
||||
return $this->failed('手机号获取失败');
|
||||
}
|
||||
|
||||
if ($encryptedData == 'undefined') {
|
||||
return $this->failed('手机号获取失败');
|
||||
}
|
||||
|
||||
$app = app('wechat.mini_program');
|
||||
if ($code) {
|
||||
$session = $app->auth->session($code);
|
||||
|
||||
if ($session->errcode > 0) {
|
||||
return $this->failed('提交订单失败');
|
||||
}
|
||||
$session_key = $this->session_key;
|
||||
} else {
|
||||
$session_key = $this->user->session_key;
|
||||
}
|
||||
|
||||
//解密手机号
|
||||
// $pc = new WXBizDataCrypt(config('wechat.mini_program.default.app_id'), $session_key);
|
||||
// $errCode = $pc->decryptData($encryptedData, $iv, $decryptedData);
|
||||
|
||||
// if ($errCode != 0) {
|
||||
// return $this->failed('提交订单失败p');
|
||||
// }
|
||||
// $mobile = $decryptedData->phoneNumber;
|
||||
|
||||
//解密手机号
|
||||
$decryptedData = $app->encryptor->decryptData($session_key, $iv, $encryptedData);
|
||||
$mobile = $decryptedData['phoneNumber'];
|
||||
|
||||
$goods = Goods::find($goodsID);
|
||||
|
||||
if ($this->user->session_key != $session_key) {
|
||||
$this->user->session_key = $session_key;
|
||||
$this->user->save();
|
||||
}
|
||||
|
||||
if (!$goods) {
|
||||
return $this->failed('商品未找到或已下架');
|
||||
}
|
||||
|
||||
if ($goods->canOrder() !== true) {
|
||||
return $this->failed($goods->canOrder());
|
||||
}
|
||||
|
||||
$company = ['company' => $company, 'area' => $area, 'mobile' => $mobile];
|
||||
|
||||
try {
|
||||
$items = array();
|
||||
array_push($items, new OrderDetail(['goods' => $goods, 'number' => $number]));
|
||||
$order = Orders::create($this->user->id, $items, $goods->type, null, json_encode($company));
|
||||
|
||||
$data = $this->orderPay($order, 'wxpay');
|
||||
|
||||
return $this->success($data);
|
||||
} catch (\Exception $e) {
|
||||
return $this->failed('下单失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接付款,适用于未付款订单,再次发起付款
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-05-08T15:50:10+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function pay(Request $request)
|
||||
{
|
||||
$order = Order::where('orderid', $request->orderid)->first();
|
||||
|
||||
if ($order && $order->canPay()) {
|
||||
$data = $this->orderPay($order, 'wxpay');
|
||||
return $this->success($data);
|
||||
} else {
|
||||
return $this->failed('订单状态不可支付');
|
||||
}
|
||||
}
|
||||
}
|
||||
46
app/Http/Controllers/OrderNotifyController.php
Normal file
46
app/Http/Controllers/OrderNotifyController.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\OrderPayment;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class OrderNotifyController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$app = app('wechat.payment');
|
||||
$response = $app->handlePaidNotify(function ($message, $fail) {
|
||||
|
||||
$payment = OrderPayment::where('out_trade_no', $message['out_trade_no'])->first();
|
||||
if ($payment && $message['return_code'] === 'SUCCESS') {
|
||||
if (array_get($message, 'result_code') === 'SUCCESS') {
|
||||
try {
|
||||
// 支付结果
|
||||
$payment->transaction_id = $message['transaction_id'];
|
||||
$payment->end_at = strtotime($message['time_end']);
|
||||
$payment->paid_amount = $message['total_fee'] / 100;
|
||||
$payment->save();
|
||||
// 如果订单可以支付,未支付状态或者未关闭的订单
|
||||
// 确认订单支付状态
|
||||
// 否则直接退款
|
||||
if ($payment->order->canPay()) {
|
||||
$payment->order->paid();
|
||||
}
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return $fail($e->getMessage());
|
||||
}
|
||||
} elseif (array_get($message, 'result_code') === 'FAIL') {
|
||||
return $fail('支付失败');
|
||||
}
|
||||
} else {
|
||||
return $fail('通信失败,请稍后再通知我');
|
||||
}
|
||||
});
|
||||
return $response;
|
||||
|
||||
}
|
||||
}
|
||||
147
app/Http/Controllers/PolicyController.php
Normal file
147
app/Http/Controllers/PolicyController.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\AreaResource;
|
||||
use App\Http\Resources\CategoryResource;
|
||||
use App\Http\Resources\PolicyListResource;
|
||||
use App\Http\Resources\PolicyResource;
|
||||
use App\Http\Resources\TradeResource;
|
||||
use App\Models\Category;
|
||||
use App\Models\ChinaArea;
|
||||
use App\Models\Policy;
|
||||
use App\Models\Trade;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PolicyController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$category_id = $request->category_id;
|
||||
$trade_id = $request->trade_id;
|
||||
$area_id = $request->area_id;
|
||||
|
||||
if ($start == '开始时间') {
|
||||
$start = '';
|
||||
}
|
||||
|
||||
if ($end == '结束时间') {
|
||||
$end = '';
|
||||
}
|
||||
|
||||
$policys = Policy::with(['areas'])
|
||||
->where('status', 1)
|
||||
->where(function ($q) use ($title) {
|
||||
$q->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%")->orWhere('no', 'like', "%{$title}%");
|
||||
});
|
||||
})
|
||||
->when($category_id, function ($query) use ($category_id) {
|
||||
$query->where('category_id', $category_id);
|
||||
})
|
||||
|
||||
->when($trade_id, function ($query) use ($trade_id) {
|
||||
$query->whereHas('trades', function ($query) use ($trade_id) {
|
||||
$query->where('trade_id', $trade_id);
|
||||
});
|
||||
})
|
||||
|
||||
->when($area_id, function ($query) use ($area_id) {
|
||||
$query->whereHas('areas', function ($query) use ($area_id) {
|
||||
$area = ChinaArea::find($area_id);
|
||||
if ($area->parent_id) {
|
||||
$query->whereIn('china_area_id', [$area_id, $area->parent_id]);
|
||||
} else {
|
||||
$query->where('china_area_id', $area_id);
|
||||
}
|
||||
});
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('begined_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('begined_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('begined_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->orderBy('created_at', 'desc')->paginate();
|
||||
|
||||
return PolicyListResource::collection($policys)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 200,
|
||||
]);
|
||||
|
||||
// return $this->success(new PolicyCollection($policys));
|
||||
}
|
||||
|
||||
public function show(Policy $policy)
|
||||
{
|
||||
return $this->success(new PolicyResource($policy));
|
||||
}
|
||||
|
||||
//收藏
|
||||
public function favorite(Policy $policy)
|
||||
{
|
||||
if ($this->user->hasFavorited($policy)) {
|
||||
$result = $this->user->unfavorite($policy);
|
||||
$text = '取消收藏';
|
||||
} else {
|
||||
$result = $this->user->favorite($policy);
|
||||
$text = '收藏';
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
return ['status_code' => 0, 'status' => 'SUCCESS', 'message' => $text . '成功', 'isFavorited' => $this->user->hasFavorited($policy)];
|
||||
} else {
|
||||
return ['status_code' => 4000, 'status' => 'ERROR', 'message' => $text . '失败', 'isFavorited' => $this->user->hasFavorited($policy)];
|
||||
}
|
||||
}
|
||||
|
||||
//部门
|
||||
public function categories()
|
||||
{
|
||||
$lists = Category::where('status', 1)->get();
|
||||
return $this->success(CategoryResource::collection($lists));
|
||||
}
|
||||
|
||||
//行业
|
||||
public function trades()
|
||||
{
|
||||
$lists = Trade::where('status', 1)->get();
|
||||
return $this->success(TradeResource::collection($lists));
|
||||
}
|
||||
|
||||
//地区
|
||||
public function areas()
|
||||
{
|
||||
$areas = ChinaArea::where('parent_id', 9)->get();
|
||||
return $this->success(AreaResource::collection($areas));
|
||||
}
|
||||
|
||||
//搜索条件
|
||||
public function parameters()
|
||||
{
|
||||
$categorys = Category::where('status', 1)->get();
|
||||
$trades = Trade::where('status', 1)->get();
|
||||
$areas = ChinaArea::where('parent_id', 9)->Orwhere('id', 9)->get();
|
||||
|
||||
$categorys->prepend(new Category(['id' => '', 'title' => '部门']));
|
||||
$trades->prepend(new Trade(['id' => '', 'title' => '行业']));
|
||||
$areas->prepend(new ChinaArea(['id' => '', 'name' => '区域']));
|
||||
|
||||
return [
|
||||
'status_code' => 0,
|
||||
'status' => 'SUCCESS',
|
||||
'categorys' => CategoryResource::collection($categorys),
|
||||
'trades' => TradeResource::collection($trades),
|
||||
'areas' => AreaResource::collection($areas),
|
||||
];
|
||||
#Todo..
|
||||
}
|
||||
|
||||
}
|
||||
58
app/Http/Controllers/TeamController.php
Normal file
58
app/Http/Controllers/TeamController.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\TeamResource;
|
||||
use App\Models\User;
|
||||
use App\Utils\Images;
|
||||
use AsLong\UserRelation\Models\UserRelation;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TeamController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 成为会员的6层用户,这个写的比较清晰
|
||||
* @Author:<Leady>
|
||||
* @Date:2019-01-07T10:12:29+0800
|
||||
* @param Request $request [description]
|
||||
* @param integer $node [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function index(Request $request, $node = 0)
|
||||
{
|
||||
$user = $this->user;
|
||||
$lists = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%") //血缘有关
|
||||
->where('layer', '<=', $user->relation->layer + 6) //向下6层
|
||||
// ->whereHas('identity', function ($query) use ($user) {
|
||||
// //存在大于会员身份
|
||||
// $query->where('identity_id', '>', 0);
|
||||
// })
|
||||
// ->orderBy('layer', 'asc')->orderBy('user_id', 'asc')->paginate(50);
|
||||
->orderBy('layer', 'asc')->orderBy('user_id', 'asc')->paginate(); //层正序,分页。
|
||||
|
||||
return TeamResource::collection($lists)->additional([
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
//推荐
|
||||
public function recommen(User $user)
|
||||
{
|
||||
// \Log::error('推荐 ' . $user);
|
||||
$url = Images::getUserQrcode($user);
|
||||
|
||||
$data = [
|
||||
'status' => 'SUCCESS',
|
||||
'status_code' => 0,
|
||||
'url' => $url,
|
||||
];
|
||||
|
||||
// \Log::error('推荐 data' . json_encode($data));
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
||||
81
app/Http/Controllers/TestController.php
Normal file
81
app/Http/Controllers/TestController.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\AreaResource;
|
||||
use App\Http\Resources\CategoryResource;
|
||||
use App\Http\Resources\TradeResource;
|
||||
use App\Models\Category;
|
||||
use App\Models\ChinaArea;
|
||||
use App\Models\Order;
|
||||
use App\Models\Policy;
|
||||
use App\Models\PolicyTrade;
|
||||
use App\Models\Trade;
|
||||
use App\Models\User;
|
||||
use App\Models\Withdraw;
|
||||
use AsLong\UserAccount\Models\UserAccount;
|
||||
use AsLong\UserAccount\Models\UserAccountLog;
|
||||
use RuLong\Identity\Models\IdentityLog;
|
||||
|
||||
class TestController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$policy = Policy::find(13);
|
||||
var_dump($policy->trade_title);
|
||||
die();
|
||||
$policys = Policy::where('trade_id', '>', 0)->get();
|
||||
|
||||
foreach ($policys as $key => $policy) {
|
||||
PolicyTrade::create([
|
||||
'trade_id' => $policy->trade_id,
|
||||
'policy_id' => $policy->id,
|
||||
]);
|
||||
}
|
||||
|
||||
die();
|
||||
$categorys = Category::where('status', 1)->get();
|
||||
$trades = Trade::where('status', 1)->get();
|
||||
$areas = ChinaArea::where('parent_id', 9)->get();
|
||||
$categorys->prepend(new Category(['id' => '', 'title' => '全部']));
|
||||
$trades->prepend(new Trade(['id' => '', 'title' => '全部']));
|
||||
$areas->prepend(new ChinaArea(['id' => '', 'name' => '全部']));
|
||||
// var_dump($categorys);
|
||||
// die();
|
||||
return [
|
||||
'status_code' => 0,
|
||||
'status' => 'SUCCESS',
|
||||
'categorys' => CategoryResource::collection($categorys),
|
||||
'trades' => TradeResource::collection($trades),
|
||||
'areas' => AreaResource::collection($areas),
|
||||
];
|
||||
|
||||
die();
|
||||
$order = Order::find(21);
|
||||
if ($order->remark) {
|
||||
$remark = json_decode($order->remark, true);
|
||||
$order->user->info->update($remark);
|
||||
}
|
||||
}
|
||||
|
||||
public function deluser(User $user)
|
||||
{
|
||||
if (!$user) {
|
||||
return false;
|
||||
}
|
||||
die();
|
||||
$user->info->delete();
|
||||
Order::where('user_id', $user->id)->delete();
|
||||
Withdraw::where('user_id', $user->id)->delete();
|
||||
UserAccountLog::where('user_id', $user->id)->delete();
|
||||
UserAccount::where('user_id', $user->id)->delete();
|
||||
IdentityLog::where('user_id', $user->id)->delete();
|
||||
$user->relation->delete();
|
||||
$user->identity->delete();
|
||||
$user->pointlogs()->delete();
|
||||
$user->delete();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
61
app/Http/Controllers/UserController.php
Normal file
61
app/Http/Controllers/UserController.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\AccountResource;
|
||||
use App\Http\Resources\UserResource;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
/**
|
||||
* 用户中心数据
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$user = $this->user;
|
||||
|
||||
if ($user && $user->account) {
|
||||
$data['user'] = new UserResource($user);
|
||||
$data['account'] = new AccountResource($user->account);
|
||||
} else {
|
||||
$data['account'] = [];
|
||||
$data['user'] = [];
|
||||
}
|
||||
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function info()
|
||||
{
|
||||
$info = new UserResource($this->user);
|
||||
return $this->success($info);
|
||||
}
|
||||
|
||||
//设置支付密码
|
||||
public function password(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => 'required|between:6,32|confirmed',
|
||||
'password_confirmation' => 'required|between:6,32',
|
||||
], [
|
||||
'password.required' => '支付密码必须填写',
|
||||
'password.between' => '支付密码有误',
|
||||
'password.confirmed' => '确认密码与登录密码不一致',
|
||||
'password_confirmation.required' => '确认密码必须填写',
|
||||
'password_confirmation.between' => '确认密码有误',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->failed($validator->errors()->first());
|
||||
}
|
||||
$this->user->password = $request->password;
|
||||
$this->user->save();
|
||||
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
}
|
||||
105
app/Http/Controllers/WithdrawController.php
Normal file
105
app/Http/Controllers/WithdrawController.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\AccountResource;
|
||||
use App\Http\Resources\BankCollection;
|
||||
use App\Http\Resources\WithdrawResource;
|
||||
use App\Models\Bank;
|
||||
use App\Models\Config;
|
||||
use App\Models\User;
|
||||
use App\Rules\Checkmobile;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class WithdrawController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 提现
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$banks = Bank::where('status', 1)->get();
|
||||
|
||||
$data['account'] = new AccountResource($this->user->account);
|
||||
$data['bank'] = new BankCollection($banks);
|
||||
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
function do(Request $request) {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'money' => 'required|integer',
|
||||
'mobile' => ['required', new Checkmobile],
|
||||
'bank_name' => 'required',
|
||||
'bank_card' => 'required',
|
||||
'bank_user' => 'required|min:2|max:8',
|
||||
], [
|
||||
'money.required' => '提现金额必须填写',
|
||||
'money.integer' => '提现金额必须是整数',
|
||||
'bank_name.required' => '收款银行必须填写',
|
||||
'mobile.required' => '手机号必须填写',
|
||||
'bank_card.required' => '银行卡号必须填写',
|
||||
'bank_user.required' => '收款人必须填写',
|
||||
'bank_user.min' => '收款人不能少于:min个汉字',
|
||||
'bank_user.max' => '收款人不能多于:max个汉字',
|
||||
]);
|
||||
|
||||
if (!preg_match("/^([\x{4e00}-\x{9fa5}]+)$/u", $request->bank_user)) {
|
||||
return $this->failed('收款人必须是中文');
|
||||
}
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->failed($validator->errors()->first());
|
||||
}
|
||||
|
||||
$widthdraw_min_money = Config::where('name', 'widthdraw_min_money')->value('value');
|
||||
if ($request->money < $widthdraw_min_money) {
|
||||
return $this->failed('最少提现金额为' . $widthdraw_min_money);
|
||||
}
|
||||
|
||||
$money = $request->money;
|
||||
$type = $request->type ?? 'bank';
|
||||
$bank_name = $request->bank_name;
|
||||
$mobile = $request->mobile;
|
||||
$bank_card = $request->bank_card;
|
||||
$bank_user = $request->bank_user;
|
||||
|
||||
$widthdraw_rate = Config::where('name', 'widthdraw_rate')->value('value');
|
||||
|
||||
$service = ($money * $widthdraw_rate) / 100;
|
||||
|
||||
$this->user->withdraws()->create([
|
||||
'money' => $money - $service,
|
||||
'service' => $service,
|
||||
'type' => $type,
|
||||
'bank_name' => $bank_name,
|
||||
'mobile' => $mobile,
|
||||
'bank_card' => $bank_card,
|
||||
'bank_user' => $bank_user,
|
||||
]);
|
||||
|
||||
return $this->success('提现成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 提现记录
|
||||
*/
|
||||
public function logs(Request $request)
|
||||
{
|
||||
$status = $request->status;
|
||||
|
||||
$list = $this->user
|
||||
->withdraws()
|
||||
->when($status, function ($query, $status) {
|
||||
$query->where('status', $status);
|
||||
})
|
||||
->latest()
|
||||
->paginate(10);
|
||||
|
||||
return WithdrawResource::collection($list);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
131
app/Http/Helpers/ApiResponse.php
Normal file
131
app/Http/Helpers/ApiResponse.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Helpers;
|
||||
|
||||
use Response;
|
||||
|
||||
trait ApiResponse
|
||||
{
|
||||
/**
|
||||
* 默认成功的状态码
|
||||
* @var [type]
|
||||
*/
|
||||
protected $statusCode = 0;
|
||||
|
||||
/**
|
||||
* [getStatusCode description]
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @return [type] [description]
|
||||
*/
|
||||
protected function getStatusCode()
|
||||
{
|
||||
return $this->statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* [setStatusCode description]
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param [type] $statusCode [description]
|
||||
*/
|
||||
protected function setStatusCode($statusCode)
|
||||
{
|
||||
$this->statusCode = $statusCode;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功的返回
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param [type] $data [description]
|
||||
* @param string $status [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function success($data = true, $status = "SUCCESS")
|
||||
{
|
||||
return $this->status($status, compact('data'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 返回消息
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param [type] $message [description]
|
||||
* @param string $status [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function message($message, $status = "SUCCESS")
|
||||
{
|
||||
return $this->status($status, [
|
||||
'message' => $message,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 400 失败
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param [type] $message [description]
|
||||
* @param [type] $code [description]
|
||||
* @param string $status [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function failed($message, $code = 4000, $status = 'ERROR')
|
||||
{
|
||||
return $this->setStatusCode($code)->message($message, $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* 404 错误
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param string $message [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function notFond($message = 'Not Fond!')
|
||||
{
|
||||
return $this->failed($message, 4004);
|
||||
}
|
||||
|
||||
/**
|
||||
* 500 错误
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-05-22
|
||||
* @param string $message [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function internalError($message = "Internal Error!")
|
||||
{
|
||||
return $this->failed($message, 5000);
|
||||
}
|
||||
|
||||
private function status($status, array $data, $code = null)
|
||||
{
|
||||
if ($code) {
|
||||
$this->setStatusCode($code);
|
||||
}
|
||||
|
||||
$status = [
|
||||
'status' => $status,
|
||||
'error_code' => $this->statusCode,
|
||||
];
|
||||
if ($this->statusCode == 200) {
|
||||
$data = $data->additional([
|
||||
'status' => $status,
|
||||
'error_code' => $this->statusCode,
|
||||
]);
|
||||
} else {
|
||||
$data = array_merge($status, $data);
|
||||
}
|
||||
return $this->respond($data);
|
||||
}
|
||||
|
||||
private function respond($data, $header = [])
|
||||
{
|
||||
$rt = microtime(true) - LARAVEL_START;
|
||||
$header = array_merge($header, ['rt' => round($rt * 1000, 2) . 'ms', 'qps' => round(1 / $rt, 1)]);
|
||||
return Response::json($data, 200, $header);
|
||||
}
|
||||
}
|
||||
81
app/Http/Kernel.php
Normal file
81
app/Http/Kernel.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http;
|
||||
|
||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||
|
||||
class Kernel extends HttpKernel
|
||||
{
|
||||
/**
|
||||
* The application's global HTTP middleware stack.
|
||||
*
|
||||
* These middleware are run during every request to your application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [
|
||||
\App\Http\Middleware\CheckForMaintenanceMode::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
||||
\App\Http\Middleware\TrimStrings::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
\App\Http\Middleware\TrustProxies::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware groups.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewareGroups = [
|
||||
'web' => [
|
||||
\App\Http\Middleware\EncryptCookies::class,
|
||||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
// \Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'throttle:60,1',
|
||||
'bindings',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware.
|
||||
*
|
||||
* These middleware may be assigned to groups or used individually.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'token_auth' => \App\Http\Middleware\TokenAuthRefresh::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The priority-sorted list of middleware.
|
||||
*
|
||||
* This forces non-global middleware to always be in the given order.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewarePriority = [
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\Authenticate::class,
|
||||
\Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\Illuminate\Auth\Middleware\Authorize::class,
|
||||
];
|
||||
}
|
||||
21
app/Http/Middleware/Authenticate.php
Normal file
21
app/Http/Middleware/Authenticate.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Auth\Middleware\Authenticate as Middleware;
|
||||
|
||||
class Authenticate extends Middleware
|
||||
{
|
||||
/**
|
||||
* Get the path the user should be redirected to when they are not authenticated.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return string
|
||||
*/
|
||||
protected function redirectTo($request)
|
||||
{
|
||||
if (! $request->expectsJson()) {
|
||||
return route('login');
|
||||
}
|
||||
}
|
||||
}
|
||||
17
app/Http/Middleware/CheckForMaintenanceMode.php
Normal file
17
app/Http/Middleware/CheckForMaintenanceMode.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
|
||||
|
||||
class CheckForMaintenanceMode extends Middleware
|
||||
{
|
||||
/**
|
||||
* The URIs that should be reachable while maintenance mode is enabled.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
17
app/Http/Middleware/EncryptCookies.php
Normal file
17
app/Http/Middleware/EncryptCookies.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
|
||||
|
||||
class EncryptCookies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the cookies that should not be encrypted.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
26
app/Http/Middleware/RedirectIfAuthenticated.php
Normal file
26
app/Http/Middleware/RedirectIfAuthenticated.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class RedirectIfAuthenticated
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param string|null $guard
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (Auth::guard($guard)->check()) {
|
||||
return redirect('/home');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
48
app/Http/Middleware/TokenAuthRefresh.php
Normal file
48
app/Http/Middleware/TokenAuthRefresh.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Auth;
|
||||
use Closure;
|
||||
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
|
||||
use Tymon\JWTAuth\Exceptions\JWTException;
|
||||
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
|
||||
use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
|
||||
|
||||
class TokenAuthRefresh extends BaseMiddleware
|
||||
{
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
// 检查此次请求中是否带有 token,如果没有则抛出异常。
|
||||
$res = $this->checkForToken($request);
|
||||
// 使用 try 包裹,以捕捉 token 过期所抛出的 TokenExpiredException 异常
|
||||
try {
|
||||
// 检测用户的登录状态,如果正常则通过
|
||||
if ($this->auth->parseToken()->authenticate()) {
|
||||
return $next($request);
|
||||
}
|
||||
throw new UnauthorizedHttpException('jwt-auth', '未登录');
|
||||
} catch (TokenExpiredException $exception) {
|
||||
// 此处捕获到了 token 过期所抛出的 TokenExpiredException 异常,我们在这里需要做的是刷新该用户的 token 并将它添加到响应头中
|
||||
try {
|
||||
// 刷新用户的 token
|
||||
$token = $this->auth->refresh();
|
||||
// 使用一次性登录以保证此次请求的成功
|
||||
Auth::onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']);
|
||||
} catch (JWTException $exception) {
|
||||
// 如果捕获到此异常,即代表 refresh 也过期了,用户无法刷新令牌,需要重新登录。
|
||||
throw new UnauthorizedHttpException('jwt-auth', $exception->getMessage() . ' skyxu');
|
||||
}
|
||||
}
|
||||
// 在响应头中返回新的 token
|
||||
return $this->setAuthenticationHeader($next($request), $token);
|
||||
}
|
||||
}
|
||||
18
app/Http/Middleware/TrimStrings.php
Normal file
18
app/Http/Middleware/TrimStrings.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
|
||||
|
||||
class TrimStrings extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the attributes that should not be trimmed.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
'password',
|
||||
'password_confirmation',
|
||||
];
|
||||
}
|
||||
23
app/Http/Middleware/TrustProxies.php
Normal file
23
app/Http/Middleware/TrustProxies.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Fideloper\Proxy\TrustProxies as Middleware;
|
||||
|
||||
class TrustProxies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The trusted proxies for this application.
|
||||
*
|
||||
* @var array|string
|
||||
*/
|
||||
protected $proxies;
|
||||
|
||||
/**
|
||||
* The headers that should be used to detect proxies.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $headers = Request::HEADER_X_FORWARDED_ALL;
|
||||
}
|
||||
24
app/Http/Middleware/VerifyCsrfToken.php
Normal file
24
app/Http/Middleware/VerifyCsrfToken.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
|
||||
|
||||
class VerifyCsrfToken extends Middleware
|
||||
{
|
||||
/**
|
||||
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $addHttpCookie = true;
|
||||
|
||||
/**
|
||||
* The URIs that should be excluded from CSRF verification.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
31
app/Http/Resources/AccountLogResource.php
Normal file
31
app/Http/Resources/AccountLogResource.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AccountLogResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
|
||||
return [
|
||||
'user_id' => $this->user_id,
|
||||
'variable' => number_format($this->variable, 2),
|
||||
'balance' => number_format($this->balance, 2),
|
||||
'orderid' => $this->source['orderid'] ?? '',
|
||||
'rule' => $this->rule->title ?? '',
|
||||
'frozen' => $this->frozen,
|
||||
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
|
||||
'positive' => $this->variable > 0,
|
||||
];
|
||||
|
||||
}
|
||||
}
|
||||
22
app/Http/Resources/AccountResource.php
Normal file
22
app/Http/Resources/AccountResource.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AccountResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
|
||||
return [
|
||||
'cash' => $this->cash,
|
||||
];
|
||||
}
|
||||
}
|
||||
24
app/Http/Resources/AreaResource.php
Normal file
24
app/Http/Resources/AreaResource.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AreaResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $this->name,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
31
app/Http/Resources/ArticleCollection.php
Normal file
31
app/Http/Resources/ArticleCollection.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
use Storage;
|
||||
|
||||
class ArticleCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $article) {
|
||||
$array[$key]['id'] = $article->id;
|
||||
$array[$key]['title'] = $article->title;
|
||||
$array[$key]['description'] = $article->description;
|
||||
$array[$key]['cover'] = Storage::disk(config('admin.upload.disk'))->url($article->cover);
|
||||
$array[$key]['clicks'] = $article->clicks;
|
||||
$array[$key]['created_at'] = $article->created_at->format('Y年m月d日');
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
30
app/Http/Resources/ArticleListResource.php
Normal file
30
app/Http/Resources/ArticleListResource.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class ArticleListResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
'created_at' => $this->created_at->format('Y年m月d日'),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
32
app/Http/Resources/ArticleResource.php
Normal file
32
app/Http/Resources/ArticleResource.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class ArticleResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'description' => $this->description,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
'content' => $this->content,
|
||||
'clicks' => $this->clicks,
|
||||
'created_at' => $this->created_at->format('Y年m月d日'),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
26
app/Http/Resources/BankCollection.php
Normal file
26
app/Http/Resources/BankCollection.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class BankCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $bank) {
|
||||
$array[$key]['id'] = $bank->id;
|
||||
$array[$key]['title'] = $bank->title;
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
24
app/Http/Resources/CategoryResource.php
Normal file
24
app/Http/Resources/CategoryResource.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class CategoryResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
31
app/Http/Resources/ExplainCollection.php
Normal file
31
app/Http/Resources/ExplainCollection.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class ExplainCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $explain) {
|
||||
$array[$key]['id'] = $explain->id;
|
||||
$array[$key]['title'] = $explain->title;
|
||||
$array[$key]['description'] = $explain->description;
|
||||
$array[$key]['created_at'] = $explain->created_at->format('Y年m月d日');
|
||||
}
|
||||
|
||||
return [
|
||||
'hasMore' => $this->resource->hasMorePages(),
|
||||
'list' => $array,
|
||||
];
|
||||
}
|
||||
}
|
||||
28
app/Http/Resources/ExplainListResource.php
Normal file
28
app/Http/Resources/ExplainListResource.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class ExplainListResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'created_at' => $this->created_at->format('Y年m月d日'),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
'type' => 'explain',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
33
app/Http/Resources/ExplainResource.php
Normal file
33
app/Http/Resources/ExplainResource.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class ExplainResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'description' => $this->description,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
'content' => $this->content,
|
||||
'clicks' => $this->clicks,
|
||||
'canRead' => $this->canRead(),
|
||||
'created_at' => $this->created_at->format('Y年m月d日'),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
25
app/Http/Resources/FavoriteResource.php
Normal file
25
app/Http/Resources/FavoriteResource.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class FavoriteResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
|
||||
return [
|
||||
'id' => $this->followable->id,
|
||||
'title' => $this->followable->title,
|
||||
'created_at' => $this->created_at->format('Y年m月d日'),
|
||||
];
|
||||
}
|
||||
}
|
||||
33
app/Http/Resources/GoodsListResource.php
Normal file
33
app/Http/Resources/GoodsListResource.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class GoodsListResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 无法购买的原因
|
||||
* @var string
|
||||
*/
|
||||
protected $cantBuyReason = '';
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'goods_id' => $this->id,
|
||||
'name' => $this->name,
|
||||
'description' => $this->description,
|
||||
'price' => $this->price,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
];
|
||||
}
|
||||
}
|
||||
35
app/Http/Resources/GoodsResource.php
Normal file
35
app/Http/Resources/GoodsResource.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class GoodsResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 无法购买的原因
|
||||
* @var string
|
||||
*/
|
||||
protected $cantBuyReason = '';
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'goods_id' => $this->id,
|
||||
'description' => $this->description,
|
||||
'name' => $this->name,
|
||||
'price' => $this->price,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
'content' => $this->content,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
28
app/Http/Resources/IndexExplainCollection.php
Normal file
28
app/Http/Resources/IndexExplainCollection.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class IndexExplainCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $explain) {
|
||||
$array[$key]['id'] = $explain->id;
|
||||
$array[$key]['title'] = $explain->title;
|
||||
$array[$key]['description'] = $explain->description;
|
||||
$array[$key]['created_at'] = $explain->created_at->format('Y年m月d日');
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
31
app/Http/Resources/IndexPolicyCollection.php
Normal file
31
app/Http/Resources/IndexPolicyCollection.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
// use Storage;
|
||||
|
||||
class IndexPolicyCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $policy) {
|
||||
$array[$key]['id'] = $policy->id;
|
||||
$array[$key]['title'] = $policy->title;
|
||||
// $array[$key]['cover'] = Storage::disk(config('admin.upload.disk'))->url($policy->cover);
|
||||
// $array[$key]['clicks'] = $policy->clicks;
|
||||
$array[$key]['created_at'] = $policy->created_at->format('Y年m月d日');
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
29
app/Http/Resources/OrderDetailResource.php
Normal file
29
app/Http/Resources/OrderDetailResource.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class OrderDetailResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $this->item->getTitle(),
|
||||
'number' => $this->number,
|
||||
'price' => number_format($this->price, 2),
|
||||
'total' => number_format($this->total, 2),
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->item->cover),
|
||||
];
|
||||
|
||||
}
|
||||
}
|
||||
28
app/Http/Resources/OrderListResource.php
Normal file
28
app/Http/Resources/OrderListResource.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class OrderListResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'goods_id' => $this->detail->item_id,
|
||||
'goods_title' => $this->detail->item->getTitle(),
|
||||
'goods_description' => $this->detail->item->description,
|
||||
'goods_price' => number_format($this->detail->price, 2),
|
||||
'goods_cover' => Storage::disk(config('admin.upload.disk'))->url($this->detail->item->cover),
|
||||
];
|
||||
}
|
||||
}
|
||||
40
app/Http/Resources/OrderResource.php
Normal file
40
app/Http/Resources/OrderResource.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class OrderResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$cancel = Carbon::now()->diffInSeconds($this->created_at->addMinutes(config('aslong_order.auto_cancel_order')), false);
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'orderid' => $this->orderid,
|
||||
'goods_list' => OrderDetailResource::collection($this->details),
|
||||
'state' => $this->state,
|
||||
'state_text' => $this->state_text,
|
||||
'total' => number_format($this->total, 2),
|
||||
'amount' => number_format($this->amount, 2),
|
||||
'freight' => number_format($this->freight, 2),
|
||||
'handleOption' => [
|
||||
'pay' => $this->canPay(),
|
||||
],
|
||||
'created_at' => (string) $this->created_at,
|
||||
'paid' => $this->when($this->paid_at, [
|
||||
'paid_at' => (string) $this->payment->end_at,
|
||||
'type' => strip_tags($this->payment->type_text),
|
||||
'transaction_id' => $this->payment->transaction_id,
|
||||
]),
|
||||
];
|
||||
}
|
||||
}
|
||||
29
app/Http/Resources/PolicyListResource.php
Normal file
29
app/Http/Resources/PolicyListResource.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class PolicyListResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'created_at' => $this->created_at->format('Y-m-d '),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
'type' => 'policy',
|
||||
'area_id' => $this->areas()->pluck('china_area_id'),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
36
app/Http/Resources/PolicyResource.php
Normal file
36
app/Http/Resources/PolicyResource.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Storage;
|
||||
|
||||
class PolicyResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$user = \Auth::guard('api')->user();
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'no' => $this->no,
|
||||
'category' => $this->category->title ?? '',
|
||||
'trade' => $this->trade_title,
|
||||
'description' => $this->description,
|
||||
'cover' => Storage::disk(config('admin.upload.disk'))->url($this->cover),
|
||||
'content' => $this->content,
|
||||
'clicks' => $this->clicks,
|
||||
'canRead' => $this->canRead(),
|
||||
'created_at' => $this->created_at->toDateTimeString(),
|
||||
'isFavorited' => $this->isFavoritedBy($user),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
26
app/Http/Resources/TeamResource.php
Normal file
26
app/Http/Resources/TeamResource.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class TeamResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'user_id' => $this->user_id,
|
||||
'avatar' => $this->user->info->avatar,
|
||||
'nickname' => $this->user->info->nickname,
|
||||
'mobile' => $this->user->info->mobile,
|
||||
'created_at' => $this->created_at->format('Y-m-d'),
|
||||
];
|
||||
}
|
||||
}
|
||||
24
app/Http/Resources/TradeResource.php
Normal file
24
app/Http/Resources/TradeResource.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class TradeResource extends JsonResource
|
||||
{
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
31
app/Http/Resources/UserCollection.php
Normal file
31
app/Http/Resources/UserCollection.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class UserCollection extends ResourceCollection
|
||||
{
|
||||
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
foreach ($this->collection as $key => $user) {
|
||||
$array[$key]['user_id'] = $user->id;
|
||||
$array[$key]['nickname'] = $user->info->nickname;
|
||||
$array[$key]['mobile'] = $user->info->mobile;
|
||||
$array[$key]['avatar'] = $user->info->avatar;
|
||||
}
|
||||
|
||||
return [
|
||||
'hasMore' => $this->resource->hasMorePages(),
|
||||
'list' => $array,
|
||||
];
|
||||
}
|
||||
}
|
||||
40
app/Http/Resources/UserResource.php
Normal file
40
app/Http/Resources/UserResource.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class UserResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
if (!isset($this->id)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return [
|
||||
'user_id' => $this->id,
|
||||
'nickname' => $this->info->nickname,
|
||||
'mobile' => $this->info->mobile,
|
||||
'avatar' => $this->info->avatar,
|
||||
'sex' => $this->info->sex,
|
||||
'company' => $this->info->company,
|
||||
'area' => $this->info->area,
|
||||
'identity_id' => $this->identity->identity_id ?? 0,
|
||||
'identity_text' => $this->identity_text,
|
||||
'vip_end_at' => $this->vip_end_at ? $this->vip_end_at->toDateTimeString() : '',
|
||||
'needBuy' => $this->needBuy(),
|
||||
'canCompany' => empty($this->info->company),
|
||||
'company' => [
|
||||
'company' => $this->info->company,
|
||||
'area' => $this->info->area,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
28
app/Http/Resources/WithdrawCollection.php
Normal file
28
app/Http/Resources/WithdrawCollection.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class WithdrawCollection extends ResourceCollection
|
||||
{
|
||||
/**
|
||||
* 将资源集合转换成数组。
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$array = [];
|
||||
|
||||
foreach ($this->collection as $key => $item) {
|
||||
$array[$key] = new WithdrawResource($item);
|
||||
}
|
||||
|
||||
return [
|
||||
'hasMore' => $this->resource->hasMorePages(),
|
||||
'list' => $array,
|
||||
];
|
||||
}
|
||||
}
|
||||
31
app/Http/Resources/WithdrawResource.php
Normal file
31
app/Http/Resources/WithdrawResource.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class WithdrawResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'money' => $this->money,
|
||||
'service' => $this->service,
|
||||
'type' => $this->type,
|
||||
'type_text' => $this->type_text,
|
||||
'bank_name' => $this->bank_name,
|
||||
'bank_card' => $this->bank_card,
|
||||
'bank_user' => $this->bank_user,
|
||||
'status' => $this->status_text,
|
||||
'reason' => $this->reason,
|
||||
'created_at' => (string) $this->created_at,
|
||||
'paid_at' => (string) $this->paid_at,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user