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']]); } if (isset($params['is_cloud_inventory']) && $params['is_cloud_inventory']) { $query->andWhere(['=', 'su.is_cloud_inventory', $params['is_cloud_inventory']]); } $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; // } if ($parent) { $parent_user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id','binding'])->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; } if($item['parent_user_list']==[]){ $parenttemp = SaasUser::find()->select([ 'id', // 给 mobile 字段起别名 'avatar AS avatar_url', // 给 avatar 字段起别名 'mobile AS nickname', // 给 name 字段起别名 'store_id AS store_id' // 给 store_id 字段起别名 ])->where(['is_delete' => 0, 'id' => $item['parent_id']])->asArray()->all(); $item['parent_user_list'] = $parenttemp; } $item['parent'] = $parent; } } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, 'address' => $address, 'pageNo' => $pagination['pageNo'], 'totalCount' => $pagination['totalCount'], ], ]; } //平台用户头部信息显示 public function getUserInfo($params) { $saas_user_id = $params['id']; $query = SaasUser::find()->alias('su') ->leftJoin(['s' => Store::tableName()], 'su.store_id = s.id') ->where([ 'su.is_delete' => 0, 'su.id' => $saas_user_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; } } $info['coin'] = UserWallet::getCurrencyWalletBalance($saas_user_id, Currency::CURRENCY_COIN); $info['string_code'] = UserWallet::getCurrencyWalletBalance($saas_user_id, Currency::CURRENCY_STRING_CODE); $pv_0 = OrderDetail::find() ->alias('od') ->leftJoin(['o' => Order::tableName()], 'od.order_id = o.id') ->where(['o.saas_id' => $saas_user_id, 'o.is_pay' => 1]) ->select([ 'sum(pv_0)', ])->scalar(); $info['pv_0'] = $pv_0 > 0 ? $pv_0 : 0; $pv_1 = OrderDetail::find() ->alias('od') ->leftJoin(['o' => Order::tableName()], 'od.order_id = o.id') ->where(['o.saas_id' => $saas_user_id, 'o.is_pay' => 1]) ->select([ 'sum(pv_1)', ])->scalar(); $info['pv_1'] = $pv_1 > 0 ? $pv_1 : 0; 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,can_open_store'); $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; // $item['can_open_store'] = 100;//yeyuan $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'], ] ]; } public function getSaasStringCode() { $saas_id = $this->saas_id; $query = WalletLogStringCode::find()->where(['saas_id' => $saas_id])->orderBy('created_at desc'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['money'] = sprintf('%.2f', $item['money']); $item['before_money'] = sprintf('%.2f', $item['before_money']); $item['after_money'] = bcadd($item['money'], $item['before_money'], 2); $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'], ] ]; } public function getSaasCoin() { $saas_id = $this->saas_id; $query = WalletLogCoin::find()->where(['saas_id' => $saas_id])->orderBy('created_at desc'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['money'] = sprintf('%.2f', $item['money']); $item['before_money'] = sprintf('%.2f', $item['before_money']); $item['after_money'] = bcadd($item['money'], $item['before_money'], 2); $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'], ] ]; } public function getCloudInventoryUser($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['name']) && $params['name']) { $query->andWhere(['like', 'su.name', $params['name']]); } if (isset($params['tel']) && $params['tel']) { $query->andWhere(['like', 'su.mobile', $params['tel']]); } if (isset($params['level']) && $params['level']) { $query->andWhere(['=', 'su.cloud_inventory_level', $params['level']]); } if (isset($params['is_cloud_inventory']) && $params['is_cloud_inventory'] != -1) { $query->andWhere(['=', 'su.is_cloud_inventory', $params['is_cloud_inventory']]); } $query->select('su.*, s.name as store_name')->orderBy('su.id desc'); $pagination = pagination_make($query); $list = $pagination['list']; 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; } $item['is_cloud_inventory_name'] = $item['is_cloud_inventory'] == 1 ?'是':'否'; if (!empty($item['cloud_inventory_level'])){ $cloudInventoryLevel = CloudInventoryLevel::findOne(['level' => $item['cloud_inventory_level']]); $item['cloud_inventory_level_name'] = $cloudInventoryLevel['name']; } $item['cloud_inventory_num'] = CloudInventory::find()->where(['saas_id' => $item['id'], 'is_delete' => 0]) ->select('num')->sum('num') ?? 0; } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, 'pageNo' => $pagination['pageNo'], 'totalCount' => $pagination['totalCount'], ], ]; } public function setUser($params) { $user = SaasUser::findOne($params['id']); if (empty($user)) { return [ 'code' => 1, 'msg' => '未选择任何数据' ]; } $user->is_cloud_inventory = !isset($params['is_cloud_inventory']) ? $user->is_cloud_inventory:$params['is_cloud_inventory']; $user->cloud_inventory_level = !isset($params['cloud_inventory_level']) ? $user->cloud_inventory_level:$params['cloud_inventory_level']; if (!$user->save()) { return [ 'code' => 1, 'msg' => '操作失败' . $user->errors ]; } return [ 'code' => 0, 'msg' => '操作成功' ]; } public function getUserPurchaseMoney($accessToken) { $user = SaasUser::findOne(['access_token'=>$accessToken]); if (empty($user)) { return [ 'code' => 1, 'msg' => '未选择任何数据' ]; } $page = get_params('page') ?? 1; $limit = get_params('limit') ?? 10; $query = AccountLog::find()->where(['user_id' => $user->id,'order_type'=>AccountLog::TYPE_CLOUD_INVENTORY_PURCHASE_MONEY]); $log_type = get_params('log_type'); if (!empty($log_type) && $log_type != -1) { $query->andWhere(['log_type' => $log_type]); } $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $page - 1, 'pageSize' => $limit]); $list = $query->limit($pagination->limit)->offset($pagination->offset)->asArray()->orderBy('id DESC')->all(); return [ 'code' => 0, 'msg' => '操作成功', 'data'=> [ 'purchase_money'=> $user['purchase_money'], 'list'=> $list, 'count'=> $count ] ]; } public function getRelatedMall($params) { $query = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where([ 'is_delete' => 0, ]); if (isset($params['mobile']) && $params['mobile']) { $query->andWhere(['=', 'binding', $params['mobile']]); } else { return [ 'code' => 1, 'msg' => '未选择任何数据' ]; } $list = $query->asArray()->all(); $storeIds = array_unique(array_column($list, 'store_id')); $storeDetails = []; if (!empty($storeIds)) { $storeDetails = Store::find() ->andWhere(['id'=>$storeIds,'business_model' => 1, 'is_delete' => 0]) // 其他条件 ->indexBy('id') // 按 id 索引 ->asArray() ->all(); } foreach ($list as $key => $value) { if (isset($storeDetails[$value['store_id']])) { $list[$key]['store_name'] = \Yii::$app->db->createCommand("SELECT `name` FROM cyy_store WHERE id =:id") ->bindValue(':id',$value['store_id']) ->queryScalar();//Option::get('name', $value['store_id'], 'store', '-')['value']; } else { // 去除运营模式为非独立小程序的店铺 unset($list[$key]); } } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, ], ]; } }