微信关注后确定推荐关系

基于微捷cms的开发

1.生成有推荐关系的二维码

//推广Action
	public function tuiguang()
	{
		//推广图片
        $shareImg = './uploads/share/mingpian_'.$_SESSION['wap_uid'].'.jpg';
        //if( true )
        if( false == file_exists($shareImg) )
        {
            $rs = D('Share')->mptuiguangimg($_SESSION['wap_uid']);
            if( !$rs )
            {
                $this->error('生成二维码失败');
            }
        }
        $this->assign('shareImg',$shareImg);
		$this->display();
	}

	//生成二维码的Model
	<?php
	class ShareModel extends Model
	{
		//生成二维码图片
		public function mptuiguangimg($uid)
		{
			set_time_limit(0);
			$user_info = M('userinfo')->where(array('id'=>$uid))->find();
			$nickname = $user_info['truename']?$user_info['truename']:$user_info['nickname'];
			$user_image = $user_info['headimgurl'];
			//echo "<img src='{$user_image}'>";die;
			$dst_path = './Public/erwei/bg.jpg';
			//获取头像图片的高和宽
			list($src_w, $src_h) = getimagesize($user_image);
			$imgWidth = '140';
			$imgHeight = '140';
			//改变图片大小
			$image_news = imagecreatetruecolor($imgWidth, $imgHeight);
			$user_image = imagecreatefromjpeg($user_image);
			imagecopyresized($image_news, $user_image, 0, 0, 0, 0,$imgWidth,$imgHeight,$src_w, $src_h);
			$erwema_url=$this->getUserQrcode($uid);
			//改变图片大小
			$imgWidth_ewm = '250';
			$imgHeight_ewm = '250';
			list($ewm_w, $ewm_h) = getimagesize($erwema_url);
			$image_news_ewm = imagecreatetruecolor($imgWidth_ewm, $imgHeight_ewm);
			$erwema_url = imagecreatefromjpeg($erwema_url);
			imagecopyresized($image_news_ewm, $erwema_url, 0, 0, 0, 0,$imgWidth_ewm,$imgHeight_ewm,$ewm_w, $ewm_h);
			$dst = imagecreatefromstring(file_get_contents($dst_path));
			imagecopymerge($dst, $image_news, 122, 15, 0, 0, $imgWidth, $imgHeight, 100);//头像定位
			imagecopymerge($dst, $image_news_ewm, 175, 572, 0, 0, 250, 250, 100);//二维码
			//打上文字
			$font = './Public/erwei/msyh.ttf';//字体
			$black = imagecolorallocate($dst, 255, 255, 255);//字体颜色
			imagefttext($dst,20,0,340,70, $black, $font, $nickname);
			//输出图片
			list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
			$filename_mp = './uploads/share/mingpian_'.$uid;
			$user_type='.jpg';
			switch ($dst_type) {
				case 1://GIF
					header('Content-Type: image/gif');
					$user_type='.gif';
					imagegif($dst,$filename_mp.'.gif');
					break;
				case 2://JPG
					//header('Content-Type: image/jpeg');
					$user_type='.jpg';
					imagejpeg($dst,$filename_mp.'.jpg');
					break;
				case 3://PNG
					header('Content-Type: image/png');
					$user_type='.png';
					imagepng($dst,$filename_mp.'.png');
					break;
				default:
					break;
			}
			imagedestroy($dst);
			imagedestroy($image_news_ewm);
			imagedestroy($image_news);
			return $filename_mp.$user_type;
		}
		
		//获取有推广关系的关注二维码
		private function getUserQrcode($uid)
		{
			//写入数据库
			$saveImg = './uploads/share/u_'.$uid.'.jpg';
			if( false !== file_exists($saveImg) )
			{
				return $saveImg;
			}
			$rs = M('wxuser_recognition')->where( array('scene_id'=>$uid) )->getField('code_url');
			if( !$rs )
			{
				$scene_id = $uid;
				$api = M('Diymen_set')->where(array('token'=>session('token')))->find();
				$url_get='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$api['appid'].'&secret='.$api['appsecret'];
				$json=json_decode(curlGet($url_get));
				//dump($json);die;
				$url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$json->access_token;
				if( true )
				{
					$data ='{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
				}
				else
				{
					$data ='{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}} ';
				}
				
				$p = json_decode(api_group_increment($url,$data));
				if( !$p->ticket )
				{
					return false;
				}
				else
				{
					$data = array();
					$data['scene_id'] = $uid;
					$data['code_url'] = $p->ticket;
					$data['status'] = 1;
					$data['codetype'] = 2;
					$data['createtime'] = time();
					M('wxuser_recognition')->add( $data );
					$urlImg = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$p->ticket;
					saveimg($urlImg,$saveImg);
					return $saveImg;
				}
			}
			else
			{
				$urlImg = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$rs;
				saveimg($urlImg,$saveImg);
				return $saveImg;
			}
		}
	}

//效果如下


空白为微信用户头像和关注二维码


2.同关注事件写入微信用户临时表(已锁定关系)

CREATE TABLE `tp_userwx` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `wecha_id` varchar(60) NOT NULL COMMENT '微信用户wecha_id',
  `token` varchar(60) NOT NULL,
  `sex` tinyint(1) NOT NULL COMMENT '性别',
  `address` varchar(100) NOT NULL COMMENT '地址',
  `nickname` varchar(32) NOT NULL COMMENT '昵称',
  `city` varchar(32) NOT NULL COMMENT '城市',
  `province` varchar(32) NOT NULL COMMENT '省',
  `country` varchar(32) NOT NULL COMMENT '乡镇',
  `headimgurl` varchar(200) NOT NULL COMMENT '头像',
  `language` varchar(32) NOT NULL COMMENT '语言',
  `add_time` int(11) NOT NULL COMMENT '添加时间',
  `pid` int(11) NOT NULL COMMENT '父级用户的id',
  `subscribe_time` varchar(32) NOT NULL COMMENT '关注时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `wecha_id` (`wecha_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


关注事件触发

if ('subscribe' == $data['Event'])
        {
            M('userinfo') -> where(array('wecha_id' => $this -> data['FromUserName'])) -> save(array('subscribe'=>1));
            $this->requestdata('follownum');
            $this->behaviordata('Subscribe', '');
            //$this -> adddUserInfo();//注册新会员 userinfo
            //通知推荐人
            //$this->noticeTuijianren($data['FromUserName']);
            //M('userinfo') -> where(array('wecha_id' => $this -> data['FromUserName'])) -> save(array('subscribe'=>1));
            if(strtolower(substr($data['EventKey'], 0, 8)) == 'qrscene_'){
                $scene_id=substr($data['EventKey'],8);
                //自动写入临时表
                $_SESSION['tj_uid'] = $scene_id;
                //$this->test($_SESSION['tj_uid']);
                $this->addUserwx();
            }
            else
            {
                //自动写入临时表
                $this->addUserwx();
            }
		}




	function addUserwx()
    {
        $openid = $this -> data['FromUserName'];
        $access_token = $this -> _getAccessToken();
        //是否临时表已有数据
        $map = array();
        $map['wecha_id'] = $openid;
        $wxuserInfo = M('userwx')->where($map)->find();
        //用户是否存在
        if( $wxuserInfo && !$wxuserInfo['wechaname'] )
        {
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid;
            $userinfo = curlGet( $url );
            $jsongp=json_decode($userinfo);
            if( $jsongp->openid )
            {
                $data = array();
                $data['wechaname'] = $jsongp->nickname;
                $data['sex'] = $jsongp->sex;
                $data['portrait'] = $jsongp->headimgurl;
                $data['nickname'] = $jsongp->nickname;
                $data['language'] = $jsongp->language;
                $data['city'] = $jsongp->city;
                $data['province'] = $jsongp->province;
                $data['country'] = $jsongp->country;
                $data['headimgurl'] = $jsongp->headimgurl;
                $data['add_time'] = time() ;
                M('userwx')->where( array('id'=>$wxuserInfo['id']) )->save($data);
            }
        }
        else
        {
            $data = array();
            $data['wecha_id'] = $openid;
            $data['token'] = 'cfxfgw1415328336';
            $data['pid'] = D('Userinfo')->getPid($_SESSION['tj_uid']);
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid;
            //$this->test($url);
            $userinfo = curlGet( $url );
            $jsongp=json_decode($userinfo);
            if( $jsongp->openid )
            {
                $data['wechaname'] = $jsongp->nickname;
                $data['sex'] = $jsongp->sex;
                $data['portrait'] = $jsongp->headimgurl;
                $data['nickname'] = $jsongp->nickname;
                $data['language'] = $jsongp->language;
                $data['city'] = $jsongp->city;
                $data['province'] = $jsongp->province;
                $data['country'] = $jsongp->country;
                $data['headimgurl'] = $jsongp->headimgurl;
                $data['add_time'] = time() ;
                M('userwx')->add($data);
            }
        }
    }          


3.用户注册写入会员表
抖音视频数据抓取 最近经常有人问我抓取抖音视频的数据,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求... 阅读详情

相关推荐

避坑指南:RK3588上编译EtherCAT 1.6时遇到的权限问题和模块安装错误

本文详细解析了在RK3588平台上编译EtherCAT 1.6时常见的权限问题和模块安装错误,提供了两种实战解决方案和嵌入式开发的通用权限管理策略。通过优化内核配置和编译参数,显著提升实时性能,帮助开发者高效完成EtherCAT主站部署。

weixin_33724046的博客 453

微信扫码关注公共号生成上下级关系,扫码之后的流程

基本思路:1、扫描带参数二维码时,微信会返回二维码带的参数,和扫码的微信的信息,2、在代码中接收参数,3,处理业务逻辑,基本流程;1、在哪里接收微信返回的参数?首先要在微信公共号的基本配置里共号的基本配置里的服务器URL,这个 URL指向的文件就是微信返回参数的地方 2、怎么接收返回的数据? $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  //微信返回的数据...

wbj16116的博客 6886

2024.6.15丨基于VFDB数据库的致病菌毒力因子注释实战指南

本文提供了一份基于VFDB数据库进行致病菌毒力因子本地化注释的实战指南。详细介绍了从环境准备、DIAMOND工具安装、VFDB数据库选择与构建,到核心比对操作及结果解读与过滤的全流程。重点阐述了本地化分析相较于在线工具在速度、稳定性和批量处理上的优势,旨在帮助微生物基因组研究人员高效、精准地识别致病菌的关键毒力因子。

weixin_29220405的博客 269

微信支付成功后推荐关注栏目规则:

1. 刷卡支付默认有推荐关注 2. 公众号支付和扫码支付需要5元以上才有推荐关注 3. APP支付默认没有,需要申请配置,需要有一定用户规模才可以申请 4. 已经关注的不展示推荐栏 5. 服务号未设置头像的在IOS不展示推荐关注栏 6. 用户取消过关注的默认不勾选 7. 服务商模式的,需要在特约商户开发配置页设置推荐关注appid 8. 订阅号目前是不会有默认推荐关注的

yyt8yyt8的专栏 3385

深入解析ACS SPiiPlus运动控制器的托管API架构与实战应用

本文深入解析了ACS SPiiPlus运动控制器的托管API架构,详细介绍了其核心模块、设计哲学与实战应用。通过C#/.NET封装的托管接口,开发者能够高效实现多轴协同运动控制、EtherCAT总线集成以及事件驱动的异步编程,显著提升高精度工业自动化设备的开发效率与系统稳定性。

jwt8token的博客 861

YOLO26涨点改进| TGRS 2026 | 独家自研创新、检测头改进篇| AHATHead自适应混合注意力检测头,二次创新,强化特征表达与目标判别能力,适合遥感小目标检测、小目标检测有效涨点

🔥本文提出了一种改进YOLO26模型的AHATHead自适应混合注意力检测头,通过融合全局与局部注意力机制增强特征表达能力。该方法采用动态权重分配策略,在预测阶段自动调整关键区域与通道特征权重,有效提升小目标和密集场景的检测性能。实验表明,AHATHead在保持较高推理效率的同时,显著提高了目标定位精度与类别判别能力。文章详细介绍了模块结构、实现原理和代码集成步骤,并提供了两种改进配置方案(yolo26_AHATHead.yaml和yolo26_RFHA-YOLO-AHATHead.yaml)

Ai缝合怪、助力小伙伴高效发论文 158

【关注可白嫖源码】springboot基于微信小程序的健康饮食推荐系统(案例分析)

微信小程序的健康饮食推荐系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。

VX_BYSJ9276的博客 1353

ProcessingJoy —— 最简单的实时流体模拟【JAVA】

实现基于非常非常经典的 Paper ——Jos Stam 的Real-Time Fluid Dynamics for Games 代码和注释 float visc = 0.0f; float diff = 0.0f; int N = 250; int size = (N + 2) * (N + 2); float[] u = new float[size]; // 速度, 水平/竖直 float[] v = new float[size]; float[] u_prev = new fl...

ShaderJoy 的兴趣技术杂货铺 2814

微信小程序| 用小程序复刻微信Wechat

微信作为熟人社交领域类的顶流。其中有非常多的功能值得借鉴和推敲。其中的`用户聊天界面`,`联系人界面`特别是`朋友圈界面`妥妥是进行社交类应用开发的参考和借鉴的典范!

陶人超有料的博客 1757

代码的自由之旅:用AI写出无版权烦恼的Verilog

他们还基于这个数据集,训练了一个名叫“FreeV”的AI模型,不仅能写出好用的Verilog代码,还把版权侵权的风险降到了仅3%。为了让AI安全地写Verilog,研究团队提出了三个“法宝”:一个检测AI是否会生成侵权代码的测试方法、一个干净的Verilog数据集FreeSet,还有一个基于FreeSet训练的AI模型FreeV。AI的记忆力超强,能记住训练时见过的代码。测试发现,一些用Verilog数据训练过的AI,比如VeriGen,生成侵权代码的概率从9%涨到了15%,说明它们可能学了不该学的代码。

步子哥的博客 1808

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4831

Midscene.js AI 视觉自动化测试工具:从自然语言到 E2E 用例的完整教程

Midscene.js 是一个用 AI 视觉驱动 GUI 自动化的开源框架,你用一句"点击登录按钮"就能驱动真实浏览器或手机,不用写选择器。适合写 E2E 测试的 QA、需要维护自动化脚本的开发者,以及做数据抓取的运维人员。 [![Midscene.js Chrome 扩展在 Google 搜索页运行自然语言指令的界面](https://raw.gitcode.com/GitHub_Trendi

gitblog_00435的博客 432

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1089

微信小程序毕业设计选题✅(100个新颖微信小程序题目推荐)

微信小程序毕业设计是当前计算机毕业设计中热门选题类型之一,以下将从选题方向、选题技巧以及常见问题与解决方法等方面,分享推荐微信小程序毕业设计题目,包括了基于微信小程序的社区服务平台、基于微信小程序的环保公益平台、|基于微信小程序的在线课程资源共享平台、基于微信小程序的老年人健康管理平台、基于微信小程序的旅游攻略系统、基于微信小程序的地方文化传承推广平台等

qq_15801219的博客 2740

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

微信小程序 Android医患关系管理系统app

首页、个人中心、用户管理、医生管理、医生信息管理、患者信息管理、预约就诊管理、就诊信息管理、投诉管理、投诉反馈管理、满意评价管理、系统管理,用户后端;首页、个人中心、医生信息管理、患者信息管理、预约就诊管理、就诊信息管理、投诉管理、投诉反馈管理,医生后端;系统开发和实现:基于需求分析和系统设计,进行系统的开发和实现工作,包括前端界面设计、后端逻辑编写、数据库搭建等。后端开发:选择合适的后端开发语言和框架,如Node.js、Django、Spring Boot、thinkphp等,处理业务逻辑和数据交互。

豆包程序员 1093

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于微信小程序音乐推荐系统的设计

后端语言支持以下技术栈:1 java(SSM/springboot/springcloud微服务架构)-idea/eclipse数据库工具:Navicat/SQLyog等都可以前端开发框架:vue.js数据库 mysql 版本不限微信开发者工具/hbuiderx小程序自身分为两个主要部分独立运行:view 模块和 service 模块。在开发者工具中,它们独立运行于不同的 webivew tag 中。

豆包程序员 908

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

微信公众号关注/取消关注消息推送

一、公众号配置配置公众号回调地址URL配置微信会验证此地址,直接返回微信的echostr参数即可。这里是用的测试环境,正式环境的话会提示:是否确定开启服务器配置?请注意:开启后,用户发送的消息将自动转发到该配置地址,并且在网站中设置的自动回复和自定义菜单将失效。也可使用微信云托管免服务器免鉴权接收用户消息及开发者事件推送。

Lyq2017901206的博客 4005

微信小程序的电影推荐系统 协同过滤算法

随着移动互联网技术的快速发展和智能手机的普及,人们获取信息和娱乐的方式发生了显著变化。微信小程序作为一种轻量级的应用形式,因其无需下载安装、即用即走的特点,深受用户喜爱。电影作为一种广受欢迎的娱乐方式,其信息的获取和推荐成为了用户关注的焦点。基于微信小程序的电影推荐系统应运而生,它为用户提供了一个便捷的平台,可以在微信小程序内直接浏览、搜索和获取个性化的电影推荐,从而优化用户的观影体验,满足其多样化的娱乐需求。

bishe288的博客 887

【推荐架构day9】推荐领域的基本问题:什么是信息茧房

什么是信息茧房 信息茧房其实是现在社会一个很可怕的现象,从字面意思来看的话其实比喻的是信息被虫茧一般封锁住。这个问题反映了现在随着个性化推荐的普及衍射的一个社会问题。 平时在浏览新闻或者淘宝的时候,平台会自动根据用户的浏览记录获取用户的偏好,然后推送感兴趣的文章。久而久之,比如用户A是个体育迷,那么A获取的信息大多是跟体育相关的,很难获取音乐或者军事等其它相关的资讯,因为平台追求点击...

作一个独立连续的思考者 6万+

基于微信小程序的校园周边美食推荐系统的设计与实现 qym65

在本系统中,我们充分发挥了微信小程序的优势,为用户提供了方便快捷的访问方式和良好的用户体验。该系统基于Vue.js技术来进行设计与实现,Vue.js可以进行组件化开发,数据与结构相分离,使代码量减少,从而提升开发效率,易于理解且Vue.js还是单页面应用,页面局部刷新,不用每次跳转都请求数据,加快了访问速度,提升了用户体验。微信小程序技术优势明显:构建速度快、方便对外输出、简洁的安全策略集成、支持关系数据库和非关系数据库、支持运行内嵌容器、强大开发包、技术成熟,也更好学习与操作,技术运用的可行性高。

qq_3166678367的博客 759

基本微信小程序的生活用品好物推荐分享系统

后端语言支持以下技术栈:1 java(SSM/springboot/springcloud微服务架构)-idea/eclipse数据库工具:Navicat/SQLyog等都可以前端开发框架:vue.js数据库 mysql 版本不限微信开发者工具/hbuiderx小程序自身分为两个主要部分独立运行:view 模块和 service 模块。在开发者工具中,它们独立运行于不同的 webivew tag 中。

QQ_402205496的博客 1920

微信小程序的健康饮食推荐系统

本健康饮食平台基于微信小程序开发,充分利用了微信的用户基础与社交优势,为管理员和用户提供了一站式的健康饮食管理服务。在管理员端,实现了管理员登录、管理员管理、用户管理、健康食谱管理、食物信息管理、饮食信息管理、社区交流管理和健康资讯管理八大核心功能。这些功能不仅确保了平台的稳定运行,还为管理员提供了全面的后台管理工具,使其能够高效地管理用户信息、更新健康食谱、维护食物数据库、监控饮食信息、引导社区交流和发布健康资讯。

bishe288的博客 766

springboot毕设基于微信小程序的健康饮食推荐系统 后论文+程序+部署

在现代社会,随着生活节奏的不断加快,人们的饮食习惯发生了巨大的变化。同时,虽然人们对健康的关注度在提高,但缺乏有效的工具和平台来指导他们进行合理的饮食安排。而微信小程序作为一种便捷、易于推广和使用的平台,拥有庞大的用户群体,为健康饮食推荐提供了良好的载体。从健康层面来看,该系统能够为用户提供个性化的健康饮食建议,有助于改善人们的营养状况,预防因饮食不合理导致的各种慢性疾病,如肥胖、高血压、糖尿病等。依据评估结果和用户的饮食偏好等,为用户提供个性化的饮食信息、食谱信息,涵盖不同的食谱类型。

小新毕设 1294

[精品]基于微信小程序的基于协同过滤推荐算法的家电推荐购物商城 UniApp

家电推荐购物商城系统采用Java+SpringBoot+MySQL技术栈,实现前后端分离架构。系统包含商家管理、商品管理、订单管理等核心功能模块,并集成协同过滤算法实现个性化商品推荐。基于微信小程序平台开发,使用Uniapp框架和HBuilderX工具,具有跨平台优势。系统性能方面通过压力测试确保高并发响应,支持数据备份保障可靠性。项目开发遵循标准流程,从需求分析到论文撰写完整覆盖。核心代码展示了用户登录、注册等基础功能的实现,采用Token机制进行身份验证。

z459382737的博客 998
上一篇: linux下vi命令大全
下一篇: linux yum命令详解
sentangle
博客等级 码龄14年 9粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值