| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- <?php
- namespace addons\AvoidTax\common\models;
- use yii\data\Pagination;
- /**
- * This is the model class for table "{{%addons_tax_user_auth}}".
- *
- * @property int $id
- * @property int|null $user_id
- * @property string|null $accountId
- * @property int|null $mall_id
- * @property string|null $name 姓名
- * @property string|null $id_card_no 身份证
- * @property string|null $mobile 手机号码
- * @property int|null $status 1未认证2已认证
- * @property int|null $default
- * @property string|null $id_card_front 身份证正面
- * @property string|null $id_card_back 身份证反面
- * @property string|null $auth_url 实名认证连接
- * @property int|null $created_at
- * @property int|null $updated_at
- * @property string|null $sign_data
- * @property string|null $remark
- */
- class TaxUserAuth extends \yii\db\ActiveRecord
- {
- const STATUS_NOT = 1; // 未签约
- const STATUS_WAIT = 2; // 签约中
- const STATUS_OK = 3; // 已签约
- const STATUS_UNBIND = 4; // 已解绑
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_tax_user_auth}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['user_id', 'mall_id', 'status', 'created_at', 'updated_at', 'default'], 'integer'],
- [['id_card_front', 'id_card_back'], 'string'],
- [['name', 'id_card_no', 'mobile', 'account', 'accountId', 'flowId'], 'string', 'max' => 64],
- [['auth_url', 'sign_data'], 'safe'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'user_id' => 'User ID',
- 'mall_id' => 'Mall ID',
- 'accountId' => 'work user id',
- 'name' => '姓名',
- 'id_card_no' => '身份证',
- 'mobile' => '手机号码',
- 'default' => '默认',
- 'status' => '1未认证2已认证',
- 'id_card_front' => '身份证正面',
- 'id_card_back' => '身份证反面',
- 'auth_url' => '实名认证连接',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- 'sign_data' => '签约信息',
- 'remark' => '签约错误信息',
- ];
- }
- /**
- * @return ActiveQueryInterface the relational query object.
- */
- public function getUser()
- {
- return $this->hasOne(User::class, ['id' => 'user_id']);
- }
- /**
- * 获取授权用户
- *
- * @param int $mall_id
- * @param int $user_id
- * @param int $status
- * @return static|null
- */
- public static function findAuthUser($mall_id, $user_id, $status = self::STATUS_WAIT)
- {
- return self::find()->where(compact('status', 'mall_id', 'user_id'))->one();
- }
- /**
- * 获取用户
- *
- * @param int $mall_id
- * @param int $user_id
- * @param int|null $status
- * @return static|null
- */
- public static function getAccountUser($mall_id, $user_id, $status = null)
- {
- return self::find()
- ->where(compact('mall_id', 'user_id'))
- ->andFilterWhere(['status' => $status])->orderBy('id desc')->one();
- }
- /**
- * 获取授权用户列表
- *
- * @param int $user_id
- * @param int $status
- * @return array
- */
- public static function findAuthUserList($user_id, $status = self::STATUS_WAIT): array
- {
- return self::find()
- ->select('mobile,name,id_card_no,user_id')
- ->where(['user_id' => $user_id, 'status' => $status])
- ->indexBy('user_id')
- ->asArray()
- ->all();
- }
- /**
- * 添加用户
- *
- * @param int $mall_id
- * @param int $user_id
- * @param string $accountId
- * @return boolean
- */
- public static function addAuthUser($mall_id, $user_id, string $accountId = ""): bool
- {
- $model = self::find()->where(['mall_id' => $mall_id, 'user_id' => $user_id])->one();
- if (empty($model)) {
- $model = new self();
- }
- $model->status = self::STATUS_WAIT;
- $model->mall_id = $mall_id;
- $model->user_id = $user_id;
- $model->accountId = $accountId;
- $model->created_at = time();
- $res = $model->save();
- return !$res ? false : $model;
- }
- /**
- * 签约成功
- *
- * @param int $auth_id
- * @param array $update
- * @return boolean
- */
- public static function signOk($auth_id, $update = []): bool
- {
- $auth = static::find()->select('user_id')->where(['id' => $auth_id])->one();
- $update['status'] = self::STATUS_OK;
- $update['updated_at'] = time();
- $update['default'] = (int)static::isSetDefault($auth->user_id);
- return self::updateAll($update, ['id' => $auth_id]);
- }
- /**
- * 查询是否设置默认
- *
- * @param integer $uid
- * @return boolean
- */
- public static function isSetDefault(int $uid)
- {
- return static::find()->where(['user_id' => $uid, 'default' => 1])->count() > 0
- ? false
- : true;
- }
- /**
- * 签约失败
- *
- * @param int $auth_id
- * @param array $update
- * @return boolean
- */
- public static function signFail($auth_id, $update = []): bool
- {
- $update['status'] = self::STATUS_WAIT;
- $update['updated_at'] = time();
- return self::updateAll($update, ['id' => $auth_id]);
- }
- /**
- * 当前用户ID是否签约
- *
- * @param integer $mall_id
- * @param integer $user_id
- * @return boolean
- */
- public static function uidIsSign(int $mall_id, int $user_id)
- {
- return static::find()
- ->select('id')
- ->where(['user_id' => $user_id, 'mall_id' => $mall_id, 'status' => self::STATUS_OK])
- ->one() ? true : false;
- }
- /**
- * 获取分页数据
- *
- * @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;
- }
- /**
- * 查询用户
- *
- * @param integer $mall_id
- * @param integer $id
- * @return static|null
- */
- 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->mobile = $mobile;
- $this->account = $account;
- return $this->save();
- }
- /**
- * 身份信息获取
- *
- * @param integer $mall_id
- * @param string $idcard
- * @param string $name
- * @return static|null
- */
- public static function getAutnByIdcardAndName(int $mall_id, string $idcard, string $name)
- {
- return static::find()
- ->where(['id_card_no' => $idcard, 'name' => $name, 'mall_id' => $mall_id, 'status' => static::STATUS_OK])
- ->one();
- }
- /**
- * ID查询一条认证记录
- *
- * @param integer $mall_id
- * @param integer $id
- * @return static|array|null
- */
- public static function getOkAuthById(int $mall_id, int $id)
- {
- return static::find()
- ->where(['mall_id' => $mall_id, 'id' => $id, 'status' => static::STATUS_OK])
- ->one();
- }
- /**
- * 生成一条新的记录
- *
- * @param integer $user_id
- * @return boolean
- */
- public function createNewAuth(int $user_id, string $mobile)
- {
- $model = new static;
- $model->user_id = $user_id;
- $model->accountId = $this->accountId;
- $model->flowId = $this->flowId;
- $model->mall_id = $this->mall_id;
- $model->name = $this->name;
- $model->id_card_no = $this->id_card_no;
- $model->mobile = $mobile;
- $model->status = $this->status;
- $model->id_card_front = $this->id_card_front;
- $model->id_card_back = $this->id_card_back;
- $model->auth_url = $this->auth_url;
- $model->sign_data = $this->sign_data;
- $model->default = 0;
- $model->remark = $this->remark;
- $model->created_at = $model->updated_at = time();
- return $model->save();
- }
- /**
- * 获取mallID全部已经
- *
- * @param integer $mall_id
- * @return array|static[]
- */
- public static function getAllAuthUsers(int $mall_id)
- {
- return static::find()
- ->where(['mall_id' => $mall_id, 'status' => static::STATUS_OK])
- ->all();
- }
- /**
- * 获取用户的认证列表
- *
- * @param integer $mall_id
- * @param integer $user_id
- * @return void
- */
- public static function getUserAuthList(int $mall_id, int $user_id)
- {
- return static::find()
- ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => static::STATUS_OK])
- ->select(['id', 'user_id', 'mall_id', 'name', 'id_card_no as id_card', 'mobile', 'status', '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' => static::STATUS_OK]
- );
- }
- /**
- * @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', 'user_id', 'mall_id', 'name', 'id_card_no as id_card', 'mobile', 'account', 'status', 'default'])
- ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => static::STATUS_OK, '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,
- 'mobile' => $mobile,
- 'id_card_no' => $idcard,
- 'status' => static::STATUS_OK
- ])
- ->one();
- }
- /**
- * 获取用户一天内未完成签约的列表
- *
- * @param int $mall_id 商城ID
- * @param int $user_id 会员ID
- * @return array[static]
- **/
- public static function getUserNotAuthListByOneDay(int $mall_id, int $user_id)
- {
- return static::find()
- ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => static::STATUS_WAIT])
- ->andWhere(['>', 'created_at', bcsub(time(), 86400)])
- ->all();
- }
- /**
- * 当前用户信息是否正在等待签约
- *
- * @param int $uid
- * @param string $name
- * @param string $mobile
- * @param string $id_card
- * @return boolean
- **/
- public static function isSignWait(int $uid, string $name, string $mobile, string $id_card)
- {
- return static::find()
- ->select('id')
- ->where([
- 'user_id' => $uid,
- 'name' => $name,
- 'mobile' => $mobile,
- 'id_card_no' => $id_card,
- 'status' => static::STATUS_WAIT
- ])
- ->one() ? true : false;
- }
- /**
- * 解绑
- *
- * @return boolean
- */
- public function unbind()
- {
- $this->status = static::STATUS_UNBIND;
- return $this->save();
- }
- }
|