| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\behaviors;
- use app\models\Admin;
- use app\models\MchStaff;
- use app\models\SaasUser;
- use app\models\Store;
- use app\models\User;
- use yii\base\ActionFilter;
- use yii\helpers\Json;
- use yii\web\Response;
- class StoreAdminLogin extends ActionFilter
- {
-
- const EVENT_AFTER_LOGIN_ACTION = 'afterLoginAction';
- // 接口白名单
- public static $allow_list = [
- 'client/v1/store-admin/login',
- 'client/v1/store-admin/get-express',
- ];
- public function beforeAction($action)
- {
- $select = 0;
- if($this->isMch($action, $select)){
- return $this->mchAdmin($select);
- }
- // $access_token = input_params('access_token');
- // $saas_user = SaasUser::find()->where(['access_token' => $access_token])->select('id, mobile')->asArray()->one();
- // if (empty($saas_user['mobile'])) {
- // \Yii::$app->response->data = Json::encode([
- // 'code' => 1,
- // 'msg' => '获取不到用户信息。'
- // ]);
- // return false;
- // }
- $access_token = input_params('access_token');
- $saas_user = SaasUser::findIdentityByAccessToken($access_token);
- if (empty($access_token) && $saas_user) {
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 401,
- 'msg' => '登陆失败'
- ];
- return false;
- }
- if (!$saas_user) {
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 401,
- 'msg' => '登陆失败'
- ];
- return false;
- }
- $params_r = $_REQUEST['r'];
- if (in_array($params_r, self::$allow_list)) {
- return true;
- }
- try {
- $payload = \Yii::$app->jwt->getPayload();
- } catch (\Exception $e) {
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 0,
- 'msg' => $e->getMessage(),
- 'status' => 401
- ];
- return false;
- }
- $store_admin_id = $payload['store_admin_id'];
- if ($store_admin_id) {
- $StoreMiniAdmin = \app\models\StoreAdmin::findOne(['id' => $store_admin_id, 'status' => 1, 'is_delete' => 0, 'store_id' => get_store_id()]);
- } else {
- if (!empty($payload['admin_id'])) {
- $StoreMiniAdmin = \app\models\Admin::findOne(['id' => $payload['admin_id'], 'is_delete' => 0]);
- }
- }
- if (empty($StoreMiniAdmin)) {
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 1,
- 'msg' => '您不是该商城管理员。'
- ];
- return false;
- }
- // $User = User::find()->where(['binding' => $saas_user['mobile'], 'is_delete' => 0, 'store_id' => get_store_id()])->select('id, is_admin')->one();
- // if ((int)$User->is_admin === 0) {
- // \Yii::$app->response->data = Json::encode([
- // 'code' => 1,
- // 'msg' => '您不是该商城管理员。' . get_user()->is_admin
- // ]);
- // return false;
- // }
- $store = Store::findOne(get_store_id());
- if ($store->end_time < time() && !empty((float)$store->open_price) && !empty((float)$store->renew_price)) {
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 1,
- 'msg' => '商城已过期,请及时联系管理员进行续费。'
- ];
- return false;
- }
- return true;
- }
-
- public function isMch($action, &$select = 0) {
-
- // $_GET['is_mch'] = 1;
- $key = implode('_', ['store-admin', 'isMch', get_store_id(), get_user_id()]);
- $keySelect = implode('_', ['store-admin', 'mch-select', get_store_id(), get_user_id()]);
- $is_mch = (int)input_params('is_mch');
- $mch_select = (int)input_params('mch_select');
- if($action->id == 'store-info'){
- cache()->set($key, $is_mch);
- cache()->set($keySelect, $mch_select);
- }
- if(!$is_mch){
- $is_mch = (int)cache()->get($key);
- }
- if($is_mch){
- $mch_select = (int)cache()->get($keySelect);
- }
- $select = $mch_select;
- return $is_mch;
- }
-
- public function mchAdmin($select = 0) {
- $user_id = get_user_id();
- $mch = \app\models\Mch::find()->where(['user_id' => $user_id, 'store_id' => get_store_id(), 'is_delete' => 0])->indexBy('id')->all();
- // 这里要判断用户是不是入住商的员工
- $staff = MchStaff::find()->where(['is_delete' => 0, 'user_id' => $user_id, 'store_id' => get_store_id()])->select(['mch_id'])->column();
- if($staff){
- $mchStaff = \app\models\Mch::find()->where(['is_delete' => 0,'store_id' => get_store_id(),'id' => $staff])->indexBy('id')->all();
- $mch = array_merge($mch,$mchStaff);
- }
- if(!$mch){
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 5,
- 'msg' => '您不是入驻商管理员。',
- ];
- return false;
- }
- if(count($mch) > 1 && !$select){
- \Yii::$app->response->format = Response::FORMAT_JSON;
- \Yii::$app->response->data = [
- 'code' => 2,
- 'msg' => '请选择店铺。',
- 'data' => $mch,
- ];
- return false;
- }
- $this->owner->mch = $select ? ($mch[$select] ?? array_shift($mch)) : array_shift($mch);
- return true;
- }
- }
|