generated from liutk/owl-admin-base
完善接口
parent
3cfdae17e3
commit
74f018c37d
|
|
@ -12,9 +12,12 @@ use Illuminate\Support\Facades\Storage;
|
||||||
use App\Services\Api\UserService;
|
use App\Services\Api\UserService;
|
||||||
use App\Http\Requests\CodeRequest;
|
use App\Http\Requests\CodeRequest;
|
||||||
use App\Http\Requests\UserInfoRequest;
|
use App\Http\Requests\UserInfoRequest;
|
||||||
|
use App\Http\Requests\ReceiveGiftRequest;
|
||||||
use App\Models\Activity;
|
use App\Models\Activity;
|
||||||
use App\Models\UserActivity;
|
use App\Models\UserActivity;
|
||||||
|
use App\Models\UserGift;
|
||||||
use App\Http\Resources\Api\UserResource;
|
use App\Http\Resources\Api\UserResource;
|
||||||
|
use App\Http\Resources\Api\UserGiftResource;
|
||||||
use App\Http\Resources\Api\UserActivityResource;
|
use App\Http\Resources\Api\UserActivityResource;
|
||||||
|
|
||||||
class UserController extends ApiController
|
class UserController extends ApiController
|
||||||
|
|
@ -66,6 +69,29 @@ class UserController extends ApiController
|
||||||
return $this->success(['activities' => UserActivityResource::collection($userActivities)->resolve()]);
|
return $this->success(['activities' => UserActivityResource::collection($userActivities)->resolve()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function giftList(Request $request)
|
||||||
|
{
|
||||||
|
$userGifts = $request->user()->gifts()->with(['gift', 'gift.activity'])->sort()
|
||||||
|
->simplePaginate($request->query('per_page', 20));
|
||||||
|
|
||||||
|
return $this->success(['activities' => UserGiftResource::collection($userGifts)->resolve()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userGift(UserGift $userGift, Request $request)
|
||||||
|
{
|
||||||
|
return UserGiftResource::make($userGift);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function receiveGift(UserGift $userGift, ReceiveGiftRequest $request)
|
||||||
|
{
|
||||||
|
if($userGift->user_id === $request->user()->id){
|
||||||
|
$this->service->receiveGift($userGift, $request->input());
|
||||||
|
}else{
|
||||||
|
return $this->error('领取失败。');
|
||||||
|
}
|
||||||
|
return $this->success(null, '领取成功');
|
||||||
|
}
|
||||||
|
|
||||||
public function updateUserInfo(UserInfoRequest $request)
|
public function updateUserInfo(UserInfoRequest $request)
|
||||||
{
|
{
|
||||||
$user = $request->user();
|
$user = $request->user();
|
||||||
|
|
@ -101,7 +127,7 @@ class UserController extends ApiController
|
||||||
$item = null;
|
$item = null;
|
||||||
if (is_array($fileData)) {
|
if (is_array($fileData)) {
|
||||||
foreach ($fileData as $file) {
|
foreach ($fileData as $file) {
|
||||||
if($_save_res = $this->saveFile($path, $file)){
|
if($_save_res = $this->service->saveFile($path, $file)){
|
||||||
$file_path = Storage::disk(Admin::config('admin.upload.disk'))->url($_save_res);
|
$file_path = Storage::disk(Admin::config('admin.upload.disk'))->url($_save_res);
|
||||||
}else{
|
}else{
|
||||||
$file_path = '';
|
$file_path = '';
|
||||||
|
|
@ -109,7 +135,7 @@ class UserController extends ApiController
|
||||||
$item[] = $file_path;
|
$item[] = $file_path;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if($save_res = $this->saveFile($path, $fileData)){
|
if($save_res = $this->service->saveFile($path, $fileData)){
|
||||||
$file_path = Storage::disk(Admin::config('admin.upload.disk'))->url($save_res);
|
$file_path = Storage::disk(Admin::config('admin.upload.disk'))->url($save_res);
|
||||||
}else{
|
}else{
|
||||||
$file_path = '';
|
$file_path = '';
|
||||||
|
|
@ -125,10 +151,10 @@ class UserController extends ApiController
|
||||||
if (is_array($files)) {
|
if (is_array($files)) {
|
||||||
// $_stop = 0;
|
// $_stop = 0;
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
$item[] = Storage::disk(Admin::config('admin.upload.disk'))->url($this->saveFile($path, $file));
|
$item[] = Storage::disk(Admin::config('admin.upload.disk'))->url($this->service->saveFile($path, $file));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$item = Storage::disk(Admin::config('admin.upload.disk'))->url($this->saveFile($path, $files));
|
$item = Storage::disk(Admin::config('admin.upload.disk'))->url($this->service->saveFile($path, $files));
|
||||||
}
|
}
|
||||||
$result[$key] = $item;
|
$result[$key] = $item;
|
||||||
}
|
}
|
||||||
|
|
@ -136,30 +162,4 @@ class UserController extends ApiController
|
||||||
|
|
||||||
return $this->json($result);
|
return $this->json($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function saveFile($path, $file = null)
|
|
||||||
{
|
|
||||||
if (gettype($file) == 'object') {
|
|
||||||
//获取文件大小
|
|
||||||
if($size = $file->getSize() > 2*1024*1024){//大于2M
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$type = $file->getClientOriginalExtension();
|
|
||||||
if (in_array($type, array('jpeg', 'jpg', 'bmp', 'png'))) {
|
|
||||||
$file = Storage::disk(Admin::config('admin.upload.disk'))->putFile($path, $file);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)) {
|
|
||||||
$type = $result[2];
|
|
||||||
if (in_array($type, array('jpeg', 'jpg', 'bmp', 'png'))) {
|
|
||||||
$savePath = $path . '/' . uniqid() . '.' . $type;
|
|
||||||
Storage::disk(Admin::config('admin.upload.disk'))->put($savePath, base64_decode(str_replace($result[1], '', $file)));
|
|
||||||
$file = $savePath;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $file;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
|
||||||
|
class ReceiveGiftRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'consignee'=> 'required|max:20',
|
||||||
|
'phone'=> 'regex:/^1[3456789]\d{9}$/',
|
||||||
|
'address'=>'required|max:50',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(){
|
||||||
|
$messages = [
|
||||||
|
'consignee.required'=>'请填写收件人',
|
||||||
|
'consignee.max'=>'收件人名称不能超过20位长度',
|
||||||
|
'phone.regex'=>'请输入11位有效手机号',
|
||||||
|
'address.required'=>'请填写收货地址',
|
||||||
|
'address.max'=>'收货地址不能超过50位长度',
|
||||||
|
];
|
||||||
|
return $messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function failedValidation(Validator $validator){
|
||||||
|
$error = $validator->errors()->all();
|
||||||
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources\Api;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class UserGiftResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'gift_name'=>$this->whenLoaded('gift', function () {
|
||||||
|
return $this->gift->name;
|
||||||
|
}, ''),
|
||||||
|
'gift_logo'=> $this->whenLoaded('gift', function () {
|
||||||
|
return $this->gift->logo;
|
||||||
|
}, ''),
|
||||||
|
'gift_rank'=> $this->whenLoaded('gift', function () {
|
||||||
|
return $this->gift->rank;
|
||||||
|
}, ''),
|
||||||
|
'gift_explain'=> $this->whenLoaded('gift', function () {
|
||||||
|
return $this->gift->explain;
|
||||||
|
}, ''),
|
||||||
|
'activity_name' => $this->whenLoaded('gift.activity', function () {
|
||||||
|
return $this->gift->activity->name;
|
||||||
|
}, ''),
|
||||||
|
|
||||||
|
'consignee' => $this->consignee ?? '',
|
||||||
|
'address' => $this->address ?? '',
|
||||||
|
'phone' => $this->phone ?? '',
|
||||||
|
'shipping_company' => $this->shipping_company ?? '',
|
||||||
|
'shipping_number' => $this->shipping_number ?? '',
|
||||||
|
|
||||||
|
'state' => $this->state,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function with($request)
|
||||||
|
{
|
||||||
|
return ['code' => Response::HTTP_OK, 'message' => ''];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,4 +14,9 @@ class ActivityGift extends Model
|
||||||
{
|
{
|
||||||
$q->orderBy('rank', 'asc');
|
$q->orderBy('rank', 'asc');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function activity()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Activity::class, 'activity_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,8 @@ class User extends Authenticatable
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function gifts()
|
||||||
|
{
|
||||||
|
return $this->hasMany(UserGift::class, 'user_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,4 +8,14 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
class UserGift extends Model
|
class UserGift extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
|
public function scopeSort($q)
|
||||||
|
{
|
||||||
|
$q->orderBy('created_at', 'desc');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function gift()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(ActivityGift::class, 'gift_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,10 @@
|
||||||
namespace App\Services\Api;
|
namespace App\Services\Api;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Models\UserGift;
|
||||||
|
use Slowlyo\OwlAdmin\Admin;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class UserService
|
class UserService
|
||||||
{
|
{
|
||||||
|
|
@ -62,4 +65,40 @@ class UserService
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function receiveGift(UserGift $userGift, $params)
|
||||||
|
// {
|
||||||
|
// $userGift->update([
|
||||||
|
// 'consignee' => $params['consignee'],
|
||||||
|
// 'phone' => $params['phone'],
|
||||||
|
// 'address' => $params['address'],
|
||||||
|
// 'state' => 1
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// protected function saveFile($path, $file = null)
|
||||||
|
// {
|
||||||
|
// if (gettype($file) == 'object') {
|
||||||
|
// //获取文件大小
|
||||||
|
// if($size = $file->getSize() > 2*1024*1024){//大于2M
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// $type = $file->getClientOriginalExtension();
|
||||||
|
// if (in_array($type, array('jpeg', 'jpg', 'bmp', 'png'))) {
|
||||||
|
// $file = Storage::disk(Admin::config('admin.upload.disk'))->putFile($path, $file);
|
||||||
|
// }else{
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// } else if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)) {
|
||||||
|
// $type = $result[2];
|
||||||
|
// if (in_array($type, array('jpeg', 'jpg', 'bmp', 'png'))) {
|
||||||
|
// $savePath = $path . '/' . uniqid() . '.' . $type;
|
||||||
|
// Storage::disk(Admin::config('admin.upload.disk'))->put($savePath, base64_decode(str_replace($result[1], '', $file)));
|
||||||
|
// $file = $savePath;
|
||||||
|
// }else{
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return $file;
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -49,8 +49,11 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func
|
||||||
//竞猜记录
|
//竞猜记录
|
||||||
Route::get('user-activities', [App\Http\Controllers\Api\UserController::class, 'activityList']);
|
Route::get('user-activities', [App\Http\Controllers\Api\UserController::class, 'activityList']);
|
||||||
//中奖记录
|
//中奖记录
|
||||||
//领奖
|
Route::get('user-gifts', [App\Http\Controllers\Api\UserController::class, 'giftList']);
|
||||||
//中奖记录详情;
|
//中奖记录详情;
|
||||||
|
Route::get('user-gifts/{user_gift}', [App\Http\Controllers\Api\UserController::class, 'userGift']);
|
||||||
|
//领奖
|
||||||
|
Route::post('user-gifts/{user_gift}/receive', [App\Http\Controllers\Api\UserController::class, 'receiveGift']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue