hasMany(TrafficPoolCompany::class, 'poolId', 'id'); } /** * 根据identifier查找或创建流量记录 * @param string $identifier 唯一标识 * @param array $data 额外数据 * @return static */ public static function findOrCreateByIdentifier(string $identifier, array $data = []) { $record = self::where('identifier', $identifier)->find(); if (!$record) { $insertData = array_merge([ 'identifier' => $identifier, 'identifierType' => self::IDENTIFIER_TYPE_WECHAT_ID, 'createTime' => time(), ], $data); // 如果identifier是微信ID,同时设置wechatId if (empty($insertData['wechatId']) && $insertData['identifierType'] == self::IDENTIFIER_TYPE_WECHAT_ID) { $insertData['wechatId'] = $identifier; } $record = self::create($insertData); } return $record; } /** * 更新基础信息 * @param array $data * @return bool */ public function updateBasicInfo(array $data) { $allowFields = ['nickname', 'avatar', 'gender', 'region', 'country', 'province', 'city', 'signature', 'wechatAlias', 'mobile']; $updateData = array_intersect_key($data, array_flip($allowFields)); $updateData['updateTime'] = time(); $updateData['lastSeenTime'] = time(); return $this->save($updateData); } }