diff --git a/app/Constants/v3/OrderState.php b/app/Constants/v3/OrderState.php index 718dffc..af1ff7c 100644 --- a/app/Constants/v3/OrderState.php +++ b/app/Constants/v3/OrderState.php @@ -75,6 +75,14 @@ class OrderState extends AbstractConstants */ const REFUND = [self::REFUNDING, self::REFUNDED, self::REFUND_REFUSE]; + /** + * @Message("可删除") + */ const CAN_DEL = [self::COMPLETED, self::EVALUATED, self::CANCELED, self::REFUNDED, self::REFUND_REFUSE]; + /** + * @Message("可强行退款") + */ + const CAN_REFUND_DIRECT = [self::COMPLETED, self::EVALUATED, self::REFUND_REFUSE]; + } \ No newline at end of file diff --git a/app/JsonRpc/OrderService.php b/app/JsonRpc/OrderService.php index 60de8b1..4ea5298 100644 --- a/app/JsonRpc/OrderService.php +++ b/app/JsonRpc/OrderService.php @@ -5,6 +5,7 @@ namespace App\JsonRpc; use App\Commons\Log; use App\Constants\v3\ErrorCode; use App\Constants\v3\LogLabel; +use App\Constants\v3\OrderState; use App\Exception\ErrorCodeException; use App\Model\v3\Order; use App\Model\v3\OrderMain; @@ -124,7 +125,18 @@ class OrderService implements OrderServiceInterface } // 主订单 - $orderMain = OrderMain::query()->where(['global_order_id' => $global_order_id])->first(); + $orderMain = OrderMain::query() + ->where(['global_order_id' => $global_order_id]) + ->whereIn('state', OrderState::CAN_REFUND_DIRECT) + ->first(); + + if (empty($orderMain)) { + $this->log->event(LogLabel::ORDER_REFUND_LOG, [ + 'jsonrpc_order_service_exception_onlineSingleRefund' => '订单不存在', + 'params' => json([$global_order_id, $user_id, $note]) + ]); + throw new ErrorCodeException(ErrorCode::ORDER_REFUND_FAIL); + } // 子订单 if ($child_order_id) { diff --git a/app/Request/v3/SearchGoodsRequest.php b/app/Request/v3/SearchGoodsRequest.php index 31ec5bd..46ec354 100644 --- a/app/Request/v3/SearchGoodsRequest.php +++ b/app/Request/v3/SearchGoodsRequest.php @@ -17,6 +17,7 @@ class SearchGoodsRequest extends BaseFormRequest return [ 'market_id' => 'required|nonempty|integer', 'type_id' => 'nonempty', + 'goods_category_ids' => 'nonempty', 'store_id' => 'nonempty|integer', 'keyword' => 'nonempty', 'order_by' => 'nonempty|in:default,sales,price', diff --git a/app/Service/v3/Implementations/SearchService.php b/app/Service/v3/Implementations/SearchService.php index e1f5c84..6b6a0b1 100644 --- a/app/Service/v3/Implementations/SearchService.php +++ b/app/Service/v3/Implementations/SearchService.php @@ -23,6 +23,11 @@ class SearchService implements \App\Service\v3\Interfaces\SearchServiceInterface if (isset($params['type_id']) && $params['type_id']) { $typeIds = explode(',', $params['type_id']); + $builder->whereIn('category_id', $typeIds); + } + + if (isset($params['goods_category_ids']) && $params['goods_category_ids']) { + $typeIds = explode(',', $params['goods_category_ids']); $builder->whereIn('goods_category_id', $typeIds); }