32], [['email', 'account'], 'string', 'max' => 64], [['callback_url', 'extra_msg'], 'string', 'max' => 255], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'mall_id' => 'Mall ID', 'user_id' => 'User ID', 'name' => 'Name', 'phone' => 'Phone', 'id_card' => 'Id Card', 'account_id' => 'Account ID', 'template_id' => 'Template ID', 'email' => 'Email', 'callback_url' => 'Callback Url', 'extra_msg' => 'Extra Msg', 'default' => 'Default', 'status' => 'Status', 'response' => 'Response', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } /** * @return ActiveQueryInterface the relational query object. */ public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id']); } /** * 获取分页数据 * * @param integer $page * @param integer $limit * @param callable $callback * @param string $order_by * @return array */ public static function getPageList( int $page, int $limit, callable $callback, string $order_by = 'id' ) :array { $model = static::find(); if (!empty($callback)) call_user_func($callback, $model); $pagination = new Pagination(['totalCount' => $model->count(), 'pageSize' => $limit]); $model->limit($pagination->limit)->offset($pagination->offset); $list = $model->asArray()->orderBy($order_by)->all(); $data['list'] = $list; $data['page_count'] = $pagination->pageCount; $data['current_page'] = $page + 1; return $data; } /** * ID查询 * * @param integer $mall_id * @param integer $id * @return LySilentSign|array|null a single row of query result. Depending on the setting of [[asArray]], */ public static function getUserByIdAndMallId(int $mall_id, int $id) { return static::find() ->where(['mall_id' => $mall_id, 'id' => $id]) ->one(); } /** * 修改账号 * * @param string $mobile * @param string|null $account * @return boolean */ public function changeMobile(string $mobile, $account = '') { $this->phone = $mobile; $this->account = $account; return $this->save(); } /** * 添加电签记录 * * @param integer $mall_id * @param integer $user_id * @param string $name * @param string $phone * @param string $id_card * @param string $account_id * @param array $response * @param string|null $template_id * @param string|null $email * @param string|null $callback_url * @param string|null $extra_msg * @return boolean */ public static function addSilentSign( int $mall_id, int $user_id, string $name, string $phone, string $id_card, string $account_id, array $response, string $template_id = null, string $email = null, string $callback_url = null, string $extra_msg = null ) { $model = new static; $model->mall_id = $mall_id; $model->user_id = $user_id; $model->name = $name; $model->phone = $phone; $model->id_card = $id_card; $model->account_id = $account_id; $model->response = Json::encode($response); $model->template_id = $template_id; $model->email = $email; $model->callback_url = $callback_url; $model->extra_msg = $extra_msg; $model->default = (int)static::isSetDefault($user_id); $model->status = $model->checkStatus(); return $model->save(); } /** * 查询是否设置默认 * * @param integer $uid * @return boolean */ public static function isSetDefault(int $uid) { return static::find()->where(['user_id' => $uid, 'status' => 1])->count() > 0 ? false : true; } /** * 获取该用户是否签约 * * @param integer $user_id * @return boolean */ public static function getUserIsSign(int $user_id) { return static::find() ->where(['user_id' => $user_id, 'status' => 1]) ->select('id') ->one() ? true : false; } /** * 获取签约用户信息 * * @param integer $user_id * @return LySilentSign|array|null */ public static function getSignUser(int $user_id) { return static::find() ->where(['user_id' => $user_id, 'status' => 1]) ->one(); } /** * 身份信息获取 * * @param integer $mall_id * @param string $idcard * @param string $name * @return LySilentSign|array|null */ public static function getAutnByIdcardAndName(int $mall_id, string $idcard, string $name) { return static::find() ->where(['id_card' => $idcard, 'name' => $name, 'mall_id' => $mall_id, 'status' => 1]) ->one(); } /** * uid是否签约 * * @param integer $mall_id * @param integer $uid * @return boolean */ public static function uidIsSign(int $mall_id, int $uid) { return static::find() ->select('id') ->where(['user_id' => $uid, 'mall_id' => $mall_id, 'status' => 1]) ->one() ? true : false; } /** * 创建一条新的认证记录 * * @param integer $user_id * @return boolean */ public function createNewAuth(int $user_id, string $mobile) { $model = new static; $model->user_id = $user_id; $model->mall_id = $this->mall_id; $model->name = $this->name; $model->phone = $mobile; $model->id_card = $this->id_card; $model->account_id = $this->account_id; $model->template_id = $this->template_id; $model->email = $this->email; $model->callback_url = $this->callback_url; $model->extra_msg = $this->extra_msg; $model->default = (int)static::isSetDefault($user_id); $model->status = $this->status; $model->response = $this->response; return $model->save(); } /** * @return integer */ private function checkStatus() { $response = Json::decode($this->response); if ($response['code'] == '0000') { return 1; } if ($response['code'] == '200' && !empty($response['data']) && $response['data']['status'] == 1) { return 1; } return 0; } /** * 获取用户的认证列表 * * @param integer $mall_id * @param integer $user_id * @return array|static[] */ public static function getUserAuthList(int $mall_id, int $user_id) { return static::find() ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => 1]) ->select(['id', 'mall_id', 'user_id', 'name', 'phone as mobile', 'id_card', 'default']) ->asArray() ->all(); } /** * 获取 * * @param integer $mall_id * @param integer $id * @return static|null */ public static function getAuthById(int $mall_id, int $id) { return static::find() ->where(['mall_id' => $mall_id, 'id' => $id]) ->one(); } /** * @param integer $mall_id * @param integer $user_id * @return boolean */ public static function setNotDefault(int $mall_id, int $user_id) { return static::updateAll( ['default' => 0], ['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => 1] ); } /** * @return boolean */ public function setDefault() { $this->default = 1; return $this->save(); } /** * 获取默认的签约信息 * * @param integer $mall_id * @param integer $user_id * @return static|null */ public static function getDefaultSignInfo(int $mall_id, int $user_id) { return static::find() ->select(['id', 'mall_id', 'user_id', 'name', 'phone as mobile', 'account', 'id_card', 'default']) ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => 1, 'default' => 1]) ->asArray() ->one(); } /** * 通过name mobile idcard获取用户已签约信息 * * @param integer $user_id * @param string $name * @param string $mobile * @param string $idcard * @return static|null */ public static function getSignByNMI(int $user_id, string $name, string $mobile, string $idcard) { return static::find() ->where([ 'user_id' => $user_id, 'name' => $name, 'phone' => $mobile, 'id_card' => $idcard, 'status' => 1 ]) ->one(); } /** * 查询用户是否有通过名字手机身份证签约 * * @param integer $uid * @param string $name * @param string $mobile * @param string $idcard * @return boolean */ public static function userIsSignByNMI(int $uid, string $name, string $mobile, string $idcard) { return !empty( static::find() ->where(['user_id' => $uid, 'name' => $name, 'phone' => $mobile, 'id_card' => $idcard]) ->select('id') ->one() ) ? true : false; } /** * 获取用户签约信息 * * @param integer $user_id * @param integer $id * @return static|null */ public static function getSignById(int $user_id, int $id) { return static::find() ->where(['user_id' => $user_id, 'id' => $id, 'status' => 1]) ->one(); } /** * 获取签约成功详情 * * @param integer $mall_id * @param integer $id * @return static|null */ public static function getOkAuthById(int $mall_id, int $id) { return static::find() ->where(['mall_id' => $mall_id, 'id' => $id, 'status' => 1]) ->one(); } /** * 设置解约状态 * * @return boolean */ public function setLift() { $this->status = 2; return $this->save(); } }