在ERP中进行更改时,我会收到来自API的通知。
我收到的URL地址(CallbackURL)的消息是JSON类型:
{
"NotificationType": "Product Change",
"ChangeType": "Update",
"Trigger": "M_Product",
"Value": "00087GH"
}
我有多种通知类型,也有更改类型。之后,我做了一些验证,连接模型并将数据保存在数据库中。
我应该在控制器中制作所有逻辑吗?这是操纵此类数据的最佳做法?
答案 0 :(得分:1)
您可以创建一个为您执行此操作的事件:
class ProductChangeEvent {
use SerializesModels;//Maybe needed
public $parameters;
public function __construct($parameters) {
$this->parameters = $parameters;
}
}
此类可以选择实现允许延迟的ShouldQueue
接口。
您可以通过听众处理该事件:
class ProductChangeListener {
public function handle(ProductChangeEvent $event) {
switch ($event->parameters["NotificationType"]) {
//more cases?
case "Product Change":
default:
$this->handleProductChange($event);
}
}
protected function handleProductChange(ProductChangeEvent $event) {
if ($event->parameters["ChangeType"] == "Update") {
//Handle update product change
}
}
}
显然这只是一个例子。您可以根据实际用例分配功能和案例。
然后,您可以在路由处理程序中引发此事件:
Route::get("/eventListenerCallback", function (Request $req) {
$parameters = json_decode($request->getContent(), true); //Is this right?
event(new ProductChangeEvent($parameters));
});