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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user