public static function ad_update(\ApiParam $params) { $user = User::user_show($params); $category = $params->categoryEnglishName ? \Category::loadByName($params->categoryEnglishName) : null; $city = $params->cityEnglishName ? \City::loadByName($params->cityEnglishName) : null; $ad = self::buildAd($params, $user); //@坑 太坑爹了吧,方法叫ad_update,里面却还区分insert和update,这不是挂羊头卖狗肉么。 By yubing $isBianji = isset($ad->id); //Api Attributes $ad->set('postMethod', $params->api_key); if (!$isBianji) { $ad->set('uuid', $params->uuid); } $ad->set('udid', $params->udid); if (in_array($params->api_key, array('api_mobile_android', 'baixing_ios', 'api_iosbaixing'))) { $ad->set('uuid', $params->udid); } // 过滤非法的位置信息 if (is_numeric($params->lat) && is_numeric($params->lng) && ($params->lat > -180 && $params->lat < 180) && ($params->lng > -180 && $params->lng < 180)) { $ad->set('lat', $params->lat); $ad->set('lng', $params->lng); } $i = 0; foreach ($params as $key => $value) { if (substr($key, 0, 4) == 'api_') { $ad->set($key, $value); $i++; } if ($i >= 50) { break; } } //Save Ad $ad = \Fabu_Logic::saveAd($ad, $user); new \Action\PostAd($ad); $ruleType = $isBianji ? \RuleSet::TYPE_API_MODIFY : \RuleSet::TYPE_API_ALL; //bobo加的,确保WAP站上来的信息都走所有的Rule if ($ad->get('postMethod') == 'api_wap') { $ruleType = $isBianji ? \RuleSet::TYPE_WEB_MODIFY : \RuleSet::TYPE_WEB_ALL; } try { $ad->checkMe($ruleType); } catch (\Exception $e) { return array('adId' => $ad->id, 'code' => $e->getCode(), 'msg' => $e->getMessage()); } if (!$params->mutiResponse) { return $ad->id; } else { if ($ad->status != \Ad::STATUS_ACTIVE) { return array('adId' => $ad->id, 'code' => '505', 'msg' => $ad->get('lastOperation'), 'tips' => self::generateTips($ad->get('lastOperation'), $user, $category, $city)); } else { return array('adId' => $ad->id, 'code' => 0, 'msg' => '发布成功'); } } }