love_php/app/Http/Controllers/Admin/ExchangeController.php
2026-04-02 09:20:51 +08:00

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');
}
}