| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\models\AccountLog;
- use app\models\Address;
- use Yii;
- use app\models\Store;
- use yii\base\Model;
- use app\models\User;
- use app\models\Option;
- use app\models\SaasUser;
- use Exception;
- use app\models\Admin;
- use app\models\SaasStoreReferral;
- use app\models\BusinessRightDuration;
- class SaasUsersForm extends Model
- {
- public $saas_id;
- public $log_type;
- public function rules()
- {
- return [
- [['saas_id', 'log_type'], 'integer']
- ];
- }
- public function getList($params)
- {
- $query = SaasUser::find()->alias('su')
- ->leftJoin(['s' => Store::tableName()], 'su.store_id = s.id')
- ->where([
- 'su.is_delete' => 0,
- ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
- if (isset($params['store_name']) && $params['store_name']) {
- $query->andWhere(['like', 's.name', $params['store_name']]);
- }
- if (isset($params['nickname']) && $params['nickname']) {
- $query->andWhere(['like', 'su.name', $params['nickname']]);
- }
- if (isset($params['mobile']) && $params['mobile']) {
- $query->andWhere(['like', 'su.mobile', $params['mobile']]);
- }
- $query->select('su.*, s.name as store_name')->orderBy('su.id desc');
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- $address = Address::find()->where(['is_delete' => 0])->asArray()->all();
- foreach ($list as &$item) {
- if ($item['mobile']) {
- $user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $item['mobile']])->asArray()->all();
- foreach ($user_list as $key => $value) {
- $user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
- }
- } else {
- $user_list = [];
- }
- $item['user_list'] = $user_list;
- $item['parent_user_list'] = [];
- if ($item['parent_id'] > 0) {
- $parent = SaasUser::find()->select('mobile, avatar, name')->where(['is_delete' => 0, 'id' => $item['parent_id']])->asArray()->one();
- if ($parent) {
- $parent_user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $parent['mobile']])->asArray()->all();
- foreach ($parent_user_list as $key => $value) {
- $parent_user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
- }
- $item['parent_user_list'] = $parent_user_list;
- }
- $item['parent'] = $parent;
- }
-
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list,
- 'address' => $address,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount'],
- ],
- ];
- }
- //平台用户头部信息显示
- public function getUserInfo($params)
- {
- $query = SaasUser::find()->alias('su')
- ->leftJoin(['s' => Store::tableName()], 'su.store_id = s.id')
- ->where([
- 'su.is_delete' => 0,
- 'su.id' => $params['id']
- ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
- $info = $query->select('su.*, s.name as store_name')->asArray()->one();
- if ($info) {
- $info['created_at'] = date('Y-m-d H:i:s', $info['created_at']);
- if ($info['mobile']) {
- $user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $info['mobile']])->asArray()->all();
- foreach ($user_list as $key => $value) {
- $user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
- }
- } else {
- $user_list = [];
- }
- $info['user_list'] = $user_list;
- $info['parent_user_list'] = [];
- if ($info['parent_id'] > 0) {
- $parent = SaasUser::find()->select('mobile, avatar, name')->where(['is_delete' => 0, 'id' => $info['parent_id']])->asArray()->one();
- if ($parent) {
- $parent_user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $parent['mobile']])->asArray()->all();
- foreach ($parent_user_list as $key => $value) {
- $parent_user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
- }
- $info['parent_user_list'] = $parent_user_list;
- }
- $info['parent'] = $parent;
- }
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => $info,
- ];
- }
- public function getRightList($params)
- {
- $query = SaasUser::find()->alias('su')
- ->where([
- 'su.is_delete' => 0,
- ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
- if (isset($params['nickname']) && $params['nickname']) {
- $query->andWhere(['like', 'su.name', $params['nickname']]);
- }
- if (isset($params['mobile']) && $params['mobile']) {
- $query->andWhere(['like', 'su.mobile', $params['mobile']]);
- }
- if (isset($params['id']) && $params['id']) {
- $query->andWhere(['id' => $params['id']]);
- }
- $query->select('id, mobile, store_id, name, avatar');
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- foreach ($list as &$item) {
- $item['has_store'] = 0;
- $item['store_referral'] = 0;
- $item['right1'] = 0;
- $item['right2'] = 0;
- $item['right3'] = 0;
- $store_admin = Admin::findOne(['saas_user_id' => $item['id'], 'is_delete' => 0, 'type' => 'store']);
- if($store_admin){
- $item['has_store'] = 1;
- }
- $ref = SaasStoreReferral::findOne(['referral_id' => $item['id']]);
- if($ref){
- $item['store_referral'] = 1;
- }
- $right1 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>1, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
- if($right1){
- $item['right1'] = 1;
- $item['right1_from'] = $right1['from'];
- }
- $right2 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>2, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
- if($right2){
- $item['right2'] = 1;
- $item['right2_from'] = $right2['from'];
- }
- $right3 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>3, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
- if($right3){
- $item['right3'] = 1;
- $item['right3_from'] = $right3['from'];
- }
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount'],
- ],
- ];
- }
- public function getSaasIntegral() {
- $saas_id = $this->saas_id;
- $log_type = $this->log_type;
- $query = AccountLog::find()->where(['store_id' => [0, -1], 'saas_id' => $saas_id, 'type' => AccountLog::TYPE_INTEGRAL])->orderBy('created_at desc');
- if (in_array($log_type, [1, 2])) {
- $query->andWhere(['log_type' => $log_type])->asArray()->all();
- }
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $item['log_type'] = (int)$item['log_type'];
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount'],
- ]
- ];
- }
- }
|