Skip to content

Commit

Permalink
refactor: 校验逻辑放到 validate 回调中
Browse files Browse the repository at this point in the history
  • Loading branch information
twinh committed Jun 9, 2023
1 parent 7f2d222 commit b41b6aa
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pages/admin-api/logistics-addresses/[id].php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function get()
public function patch()
{
return UpdateAction::new()
->beforeSave(function (LogisticsAddressModel $address, $req) {
->validate(function (LogisticsAddressModel $address, $req) {
$v = V::defaultOptional();
$v->setModel($address);
$v->modelColumn('name', '联系人姓名')->required($address->isNew())->notBlank();
Expand Down
14 changes: 8 additions & 6 deletions pages/admin-api/shipping-tpls/[id].php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use Miaoxing\Plugin\BaseController;
use Miaoxing\Services\Page\ItemTrait;
use Miaoxing\Services\Service\UpdateAction;
use Wei\Req;
use Wei\V;

return new class () extends BaseController {
Expand All @@ -16,15 +17,13 @@
public function patch()
{
return UpdateAction::new()
->beforeSave(function (ShippingTplModel $shippingTpl, $req) {
$shippingTpl->serviceIds = array_filter(array_unique(array_column((array) $req['rules'], 'serviceId')));

->validate(function (ShippingTplModel $shippingTpl, $req) {
$v = V::defaultOptional();
$v->setModel($shippingTpl);
$v->modelColumn('name', '名称')->required($shippingTpl->isNew())->notBlank();
$v->modelColumn('isFreeShipping', '是否包邮');
$v->inConst('valuationType', '计价方式', ShippingTplModel::class, 'VALUATION_TYPE');
$v->array('rules', '运费规则')->required($this->isRulesRequired($shippingTpl))->each(function (V $v) {
$v->array('rules', '运费规则')->required($this->isRulesRequired($shippingTpl, $req))->each(function (V $v) {
$isDefault = $v->getData()['isDefault'] ?? false;
$v->uDefaultInt('serviceId', '服务编号');
$v->array('regionIds', '地区', $isDefault ? null : 1)->required(!$isDefault);
Expand All @@ -36,6 +35,9 @@ public function patch()
$v->modelColumn('sort', '顺序');
return $v->check($req);
})
->beforeSave(function (ShippingTplModel $shippingTpl, $req) {
$shippingTpl->serviceIds = array_filter(array_unique(array_column((array) $req['rules'], 'serviceId')));
})
->afterSave(function (ShippingTplModel $shippingTpl, $req) {
if ($req['rules']) {
$shippingTpl->rules()->saveRelation($req['rules']);
Expand All @@ -44,10 +46,10 @@ public function patch()
->exec($this);
}

private function isRulesRequired(ShippingTplModel $shippingTpl): bool
private function isRulesRequired(ShippingTplModel $shippingTpl, Req $req): bool
{
// 包邮时总是可以不传规则
if ($shippingTpl->isFreeShipping) {
if ($req['isFreeShipping']) {
return false;
}

Expand Down

0 comments on commit b41b6aa

Please sign in to comment.