db->beginTransaction(); try { foreach ($data as $item) { $model = ReservationServiceGoodsSetting::getOne([ ['mall_id' => $params['mall_id']], ['item_id' => $params['item_id']], ['commission_type' => $item['commission_type']] ]); if (empty($model)) { $model = new ReservationServiceGoodsSetting(); $model->mall_id = $params['mall_id']; $model->item_id = $params['item_id']; $model->commission_type = $item['commission_type']; } $model->is_enable = $item['is_enable']; $model->item_type = $item['item_type']; $model->commission = $item['commission']; $model->is_percent = $item['is_percent']; $model->is_enable_distribution = $item['is_enable_distribution']; $config = $item['distribution_config'] ?? []; ksort($config); $model->distribution_config = $config; if (!$model->save()) throw new \Exception($model->getErrorMessage()); } $t->commit(); return true; } catch (\Exception $e) { $t->rollBack(); self::$static_error = $e->getMessage(); return false; } } /** * @return string */ public static function getErrorMessage() { return self::$static_error; } }