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\Http\Requests\CodeRequest;
|
||||
use App\Http\Requests\UserInfoRequest;
|
||||
use App\Http\Requests\ReceiveGiftRequest;
|
||||
use App\Models\Activity;
|
||||
use App\Models\UserActivity;
|
||||
use App\Models\UserGift;
|
||||
use App\Http\Resources\Api\UserResource;
|
||||
use App\Http\Resources\Api\UserGiftResource;
|
||||
use App\Http\Resources\Api\UserActivityResource;
|
||||
|
||||
class UserController extends ApiController
|
||||
|
|
@ -66,6 +69,29 @@ class UserController extends ApiController
|
|||
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)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
|
@ -101,7 +127,7 @@ class UserController extends ApiController
|
|||
$item = null;
|
||||
if (is_array($fileData)) {
|
||||
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);
|
||||
}else{
|
||||
$file_path = '';
|
||||
|
|
@ -109,7 +135,7 @@ class UserController extends ApiController
|
|||
$item[] = $file_path;
|
||||
}
|
||||
} 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);
|
||||
}else{
|
||||
$file_path = '';
|
||||
|
|
@ -125,10 +151,10 @@ class UserController extends ApiController
|
|||
if (is_array($files)) {
|
||||
// $_stop = 0;
|
||||
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 {
|
||||
$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;
|
||||
}
|
||||
|
|
@ -136,30 +162,4 @@ class UserController extends ApiController
|
|||
|
||||
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');
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
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;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\UserGift;
|
||||
use Slowlyo\OwlAdmin\Admin;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class UserService
|
||||
{
|
||||
|
|
@ -62,4 +65,40 @@ class UserService
|
|||
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-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