feat: cycle

This commit is contained in:
2025-01-08 11:28:08 +08:00
parent fd70dfabf5
commit 4c10e8ed71
5 changed files with 140 additions and 9 deletions

View File

@@ -6,6 +6,7 @@ namespace App\Controller\Admin;
use App\Middleware\Admin\JwtAuthMiddleware;
use App\Request\Admin\GoodRequest;
use App\Service\Admin\Good\CycleService;
use App\Service\Admin\Good\SkuService;
use App\Service\Admin\Good\SpuService;
use Exception;
@@ -82,12 +83,74 @@ class GoodController
}
/**
* sku 添加
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "add_sku", methods: "POST")]
#[Scene(scene: "add_sku")]
public function add_sku(GoodRequest $request)
public function addSku(GoodRequest $request)
{
return (new SkuService)->add();
}
/**
* sku 修改
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "edit_sku", methods: "POST")]
#[Scene(scene: "edit_sku")]
public function editSku(GoodRequest $request): array
{
return (new SkuService)->edit();
}
/**
* sku 删除
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "del_sku", methods: "POST")]
#[Scene(scene: "del_sku")]
public function delSku(GoodRequest $request): array
{
return (new SkuService)->del();
}
/**
* sku 详情
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "sku", methods: "POST")]
#[Scene(scene: "sku")]
public function sku(GoodRequest $request): array
{
return (new SkuService)->view();
}
/**
* sku 列表
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "list_sku", methods: "POST")]
#[Scene(scene: "list_sku")]
public function skuList(GoodRequest $request): array
{
return (new SkuService)->handle();
}
/**
* cycle 列表
* @param GoodRequest $request
* @return array
*/
#[RequestMapping(path: "list_cycle", methods: "POST")]
#[Scene(scene: "list_cycle")]
public function cycleList(GoodRequest $request): array
{
return (new CycleService)->handle();
}
}

View File

@@ -9,8 +9,7 @@ use Hyperf\DbConnection\Model\Model;
/**
* @property int $id
* @property string $dates
* @property int $is_use
* @property string $dates
* @property string $create_time
*/
class Cycle extends Model
@@ -30,7 +29,7 @@ class Cycle extends Model
/**
* The attributes that should be cast to native types.
*/
protected array $casts = ['id' => 'integer', 'is_use' => 'integer'];
protected array $casts = ['id' => 'integer'];
const string CREATED_AT = 'create_time';
const null UPDATED_AT = null;

View File

@@ -31,6 +31,10 @@ class GoodRequest extends FormRequest
'saleable' => 'required|integer|in:1,2',
'id' => 'required|integer',
'cycle_id' => 'required|integer|exists:cycle,id',
'spu_id' => 'required|integer|exists:spu,id',
'image_ids' => 'required|string',
'stock' => 'required|integer',
'price' => 'required|string',
];
}

View File

@@ -0,0 +1,40 @@
<?php
/**
* This service file is part of item.
*
* @author ctexthuang
* @contact ctexthuang@qq.com
*/
declare(strict_types=1);
namespace App\Service\Admin\Good;
use App\Model\Cycle;
use App\Service\Admin\BaseService;
use Hyperf\Di\Annotation\Inject;
class CycleService extends BaseService
{
/**
* @var Cycle $cycleModel
*/
#[Inject]
protected Cycle $cycleModel;
/**
* @return array
*/
public function handle(): array
{
$arr = $this->cycleModel->whereBetween('dates',[
date('Y-m-d',strtotime('-10 day',time())),
date('Y-m-d',strtotime('+10 day',time())),
])->orderBy('dates')->get();
if (empty($arr)) return $this->return->success('success',['list' => []]);
$arr = $arr->toArray();
return $this->return->success('success',['list' => $arr]);
}
}

View File

@@ -27,9 +27,33 @@ class SkuService extends BaseService
#[Inject]
protected Sku $skuModel;
public function handle()
/**
* @return array
*/
public function handle(): array
{
//todo Write logic
$limit = (int)$this->request->input('limit', 10);
$spuId = (int)$this->request->input('spu_id');
$list = $this->skuModel->where('spu_id',$spuId)->paginate($limit)->toArray();
$imageIdArr = array_column($list['data'],'image_ids');
$imageIds = array_unique(explode(',',implode(',',$imageIdArr)));
$imageList = $this->getOssObjects($imageIds);
foreach ($list['data'] as &$item) {
$imageOneArr = [];
foreach (explode(',',$item['image_ids']) as $imageId) {
$imageOneArr[] = [
'id' => $imageId,
'url' => $imageList[$imageId]['url']
];
}
$item['image_list'] = $imageOneArr;
}
return $this->return->success('success', ['list' => $list]);
}
/**
@@ -93,7 +117,7 @@ class SkuService extends BaseService
if ($skuInfo->order_num > 0 && $skuInfo->price != $this->request->input('price')) throw new ErrException('已有订单不可改价,退单后即可操作');
else $skuInfo->price = $this->request->input('price');
$requestOssIds = $this->request->input('oss_ids');
$requestOssIds = $this->request->input('image_ids');
$updateOssIds = array_diff(explode(',',$requestOssIds), explode(',',$skuInfo->image_ids));
$delOssIds = array_diff(explode(',',$skuInfo->image_ids), explode(',',$requestOssIds));
@@ -113,7 +137,8 @@ class SkuService extends BaseService
if (!$skuInfo->save()) throw new ErrException('修改失败');
if ($forceCleanStockCache == 1) return $this->return->success();//todo 修改缓存
if ($forceCleanStockCache == 1) return $this->return->success();
//todo 修改缓存
return $this->return->success();
}
@@ -153,7 +178,7 @@ class SkuService extends BaseService
$res = $skuInfo->toArray();
$res['image_list'] = $imageList;
$res['image_list'] = array_values($imageList);
return $this->return->success('success',$res);
}