11], [['nickname', 'phone'], 'safe'], [['avatar_url', 'email', 'video', 'video_cover_pic', 'share_pic', 'wechat', 'phone_key_text'], 'safe'], [['company'], 'string', 'max' => 48], [['address', 'sign'], 'string', 'max' => 120], [['tags'], 'safe'], [['lng', 'lat'], 'number'], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'mall_id' => 'Mall ID', 'user_id' => 'User ID', 'mobile' => 'Mobile', 'nickname' => 'Nickname', 'avatar_url' => 'Avatar Url', 'department_id' => 'Department ID', 'position_id' => 'Position ID', 'phone' => 'Phone', 'email' => 'Email', 'company' => 'Company', 'address' => 'Address', 'sign' => 'Sign', 'video' => 'Video', 'tags' => 'Tags', 'images' => 'Images', 'status' => 'Status', 'share_num' => 'Share Num', 'created_at' => 'Created At', 'updated_at' => 'Updated At', 'browse_num' => 'Browse Num', 'like_num' => 'Like Num', ]; } /** * 保存数据 * * @author hpei * @return bool|object */ public static function setData($params) { try { if (!empty($params['id'])) { $model = self::findOne(['id' => $params['id'], 'status' => StatusEnum::ENABLED]); if (empty($model)) throw new \Exception('卡片不存在或者已删除'); if (isset($params['user_id']) && $model->user_id != $params['user_id']) throw new \Exception('不允许修改他人卡片'); } else { if (self::find()->where(['mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'status' => StatusEnum::ENABLED])->count()) { throw new \Exception('卡片已存在'); } $model = new self(); } if($params['status']!=StatusEnum::DELETE){ $card_user = BusinessCardUser::findOne(['user_id' => $params['user_id'], 'status' => StatusEnum::ENABLED]); if(empty($card_user)){ $card_user = new BusinessCardUser(); $card_user->role_type = 3; // 默认职位为员工 } $partent_id = User::findOne(['id' => $params['user_id'], 'status' => StatusEnum::ENABLED]); $card_user->mall_id = $params['mall_id']; $card_user->tags = !empty($params['tags']) ? $params['tags'] : null; $card_user->user_id = $params['user_id']; $card_user->parent_id = $partent_id->parent_id; $card_user->department_id = $params['department_id']; $card_user->position_id = $params['position_id']; if (!$card_user->save(false)) { throw new \Exception($card_user->getErrorMessage()); } } $params['share_pic'] = $params['share_pic'] ?? ''; if (!$model->load($params, '') || !$model->save()) throw new \Exception($model->getErrorMessage()); return $model; } catch (\Exception $e) { self::$static_error = $e->getMessage(); return false; } } /** * 获取名片列表 * * @author hpei * @param array $where last_id,keyword * @param string $order */ public static function getCardList($where, $order = 'id desc') { $select = ['avatar_url','share_num', 'user_id', 'company', 'position_id', 'email', 'mobile', 'id', 'nickname', 'created_at']; $params = [ 'where' => $where, 'select' => $select, 'order' => $order, 'limit' => 10, 'with' => ['position' => function($qurey){ $qurey->select(['name','id']); }], ]; $list = self::listPage($params); return $list; } public function getPosition() { return $this->hasOne(BusinessCardPosition::class, ['id' => 'position_id']); } public function getParent() { return $this->hasOne(User::class, ['id' => 'parent_id']); } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id, avatar_url, nickname, username, mobile'); } public function getCardUser() { return $this->hasOne(BusinessCardUser::class, ['user_id' => 'user_id']); } /** * 获取卡片详情 * * @param $params * @param bool $info * @return array|mixed * @author hpei */ public static function getCardInfo($params, $info = true) { $card_info = self::getOne($params, true); if (empty($card_info)) return []; if ($info) { if ($card_info['tags']) $card_info['tags'] = explode(',' ,$card_info['tags']); if ($card_info['images']) $card_info['images'] = explode(',' ,$card_info['images']); $position_info = BusinessCardPosition::find() ->where(['id' => [$card_info['position_id'], $card_info['department_id']]]) ->andWhere(['=', 'status', StatusEnum::ENABLED]) ->select('name') ->indexBy('id') ->column(); $card_info['position_name'] = isset($position_info[$card_info['position_id']]) ? $position_info[$card_info['position_id']] : ''; $card_info['department_name'] = isset($position_info[$card_info['department_id']]) ? $position_info[$card_info['department_id']] : ''; } return $card_info; } }