130 lines
4.0 KiB
PHP
130 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Requests\SendCoinExchange;
|
|
use App\Http\Requests\StoreExchangeGoods;
|
|
use App\Http\Response\ResponseJson;
|
|
use App\Models\CoinExchange;
|
|
use App\Models\ExchangeGoods;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
|
|
class ExchangeController extends Controller
|
|
{
|
|
use ResponseJson;
|
|
|
|
/**
|
|
* 创建商品
|
|
* @param StoreExchangeGoods $request
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function storeGoods(StoreExchangeGoods $request)
|
|
{
|
|
$data = $request->validated();
|
|
$goods = ExchangeGoods::create($data);
|
|
//修改redi商品库存
|
|
$goods->updateCacheStock();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 修改商品
|
|
* @param StoreExchangeGoods $request
|
|
* @param ExchangeGoods $goods
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function updateGoods(StoreExchangeGoods $request, ExchangeGoods $goods)
|
|
{
|
|
$data = $request->validated();
|
|
$goods->update($data);
|
|
$goods->updateCacheStock();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 商品上下架
|
|
* @param Request $request
|
|
* @param ExchangeGoods $goods
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function saleGoods(Request $request, ExchangeGoods $goods)
|
|
{
|
|
$goods->is_sale = $goods->is_sale?0:1;
|
|
$goods->save();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 商品列表
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function goodsList(Request $request)
|
|
{
|
|
$goods = ExchangeGoods::query();
|
|
$is_sale = $request->input('is_sale');
|
|
if (is_numeric($is_sale)) {
|
|
$goods->sale();
|
|
}
|
|
if ($request->input('keyword')) {
|
|
$goods = $goods->keywords();
|
|
}
|
|
$goods = $goods->orderByDesc('id')->paginate();
|
|
return $this->success('ok', $goods);
|
|
}
|
|
|
|
/**
|
|
* 商品详情
|
|
* @param Request $request
|
|
* @param ExchangeGoods $goods
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function goods(Request $request, ExchangeGoods $goods)
|
|
{
|
|
return $this->success('ok', $goods);
|
|
}
|
|
|
|
/**
|
|
* 删除商品
|
|
* @param Request $request
|
|
* @param ExchangeGoods $goods
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
* @throws \Exception
|
|
*/
|
|
public function deleteGoods(Request $request, ExchangeGoods $goods)
|
|
{
|
|
$goods->delete();
|
|
return $this->success('ok');
|
|
}
|
|
|
|
/**
|
|
* 商品兑换记录
|
|
* @param Request $request
|
|
* @param ExchangeGoods $goods
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function exchangeLogs(Request $request, ExchangeGoods $goods)
|
|
{
|
|
$logs = $goods->exchangeLogs()->with('user:id,nickname,photo','goods:id,price,title,pic');
|
|
$keyword = $request->input('keyword');
|
|
if ($keyword) {
|
|
$logs = $logs->keyword();
|
|
}
|
|
$status = $request->input('status');
|
|
if ($status) {
|
|
$logs = $logs->status();
|
|
}
|
|
$logs = $logs->paginate();
|
|
return $this->success('ok', $logs);
|
|
}
|
|
|
|
public function sendLog(SendCoinExchange $request, CoinExchange $log)
|
|
{
|
|
$data = $request->validated();
|
|
$data['status'] = 'SENDING';
|
|
$log->update($data);
|
|
return $this->success('ok');
|
|
}
|
|
}
|