wechat三级分销

1.精准 裂变  粘度

2.二维码  上下级之间的依赖关系(3级 表)  登录 支付


3.

安装laravel     composer create-project laravel/laravel=~5.1 fenxiao
安装wechat扩展   composer require overtrue/wechat=2.*
wechat扩展概览   https://github.com/overtrue/wechat/wiki


接入微信
###3.1 配置URL

添加路由
// <project>/app/Http/routes.php
Route::any('wx' , 'WxController@index');  

**************什么又post  又get???


写控制器
public function index() {
define('TOKEN' , 'helloworldworldhello');
$server = new Server( env('WX_ID') , env('WX_TOKEN') );
return $server->serve();    

**************初始化的时候是怎么初始化?一次还是?

}


修改配置:
// <project>/.env
WX_ID =your_weixin_id
WX_SEC =your_weixin_secret
WX_TOKEN =your_weixin_token

**************配置env 时候 到底是怎么去env 里边去找的????


4.


5.关注微信号


5.1 关注回复
$server->on('event' , 'subscribe' , function($event) {
return '欢迎关注';
});
有没有看到回复??? 为什么呢???
微信要求回复的格式为XML格式,因此,只回复文字是不行的.
wechat扩展对消息做了包装,我们用操作XML就可以完成消息回复了.

$server->on('event' , 'subscribe' , function($event) {
return Message::make('text')->content('wechat 扩展,欢迎关注');
});

************************应该写在哪里??


5.2 功能移至方法中
如果想把一个对象的方法作为回调函数,可以以数组形式来传递.格式为[对象 , 方法名];
$server->on('event' , 'subscribe' , [$this,'guanzhu'] );

public function guanzhu($event) {
return Message::make('text')->content('欢迎关注--from回调函数');
}



5.3 创建users表和user Model
修改系统自带的users表的迁移文件:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('uid');
$table->string('openid',32);
$table->string('name');
$table->integer('subtime');
});
}


执行迁移,并修改Model <projects>/app/User.php
class User extends Model
{
// 修改下两行,以适应users表
protected $primaryKey = 'uid';
public $timestamps = false;
}



5.4 关注用户写入数据库
public function guanzhu($event) {
$wxuser = ( new UserService( env('WX_ID') , env('WX_SEC') ) )->get($event->FromUserName);
$user = new User();
$user->openid = $event->FromUserName;
$user->subtime = time();
$user->name = $wxuser->nickname;
$user->save();
return Message::make('text')->content(',欢迎注册');
}


5.5 获取用户详细信息
public function guanzhu($event) {
$wxuser = ( new UserService( env('WX_ID') , env('WX_SEC') ) )->get($event->FromUserName);
$user = new User();
$user->openid = $event->FromUserName;
$user->subtime = time();
$user->name = $wxuser->nickname;
$user->save();
return Message::make('text')->content(',欢迎注册');
}


5.6 生成场景二维码
当用户关注后,为期生成场景二维码,这个二维码内有期身份信息,如uid,uname,都可以.
public functon guanzhu($event) {
...
...
// 为用户生成场景二维码
$this->qr($user->uid);
}
protected function qr($uid) {
$qr = new QRCode( env('WX_ID') , env('WX_SEC') );
$result = $qr->forever($uid);
$today = $this->mkd();
$qimg = 'qr_'.$uid.'.jpg';
$qr->download($result->ticket , public_path() . $today . '/' . $qimg);
return $today . '/' . $qimg;
}
protected function mkd() {
$pub = public_path();
$today = date('/Y/m');
if( !is_dir($pub.$today) ) {
mkdir($pub . $today , 0777 , true);
}
return $today;
}


6.三级分销关系
6.1 表结构
用户有自己的上级,上级的上级,如何设计表?
无限级分类? 如下图.
uid
name
pid
3
lisi
2
4
wang
3
5
wang
4
用无限级分类没有必要:
1. 查询麻烦,只能查看自己的上级.
2. 查上上级,上上上级需要循环或递归.
3. 事实上不用无限级,3级就足够.
因此,我们直接把会员的上级,上上级,上上上通过3个字段,记录完毕.如下:
|uid|name|p1|p2|p3|
|---|---|---|--|--|
| 1 |tom| 0 |0 |0 |
| 2 |poly|1 |0 |0 |
| 3 |lisi|2 |1 |0 |
| 4 |wang|3 |2 |1|
| 5 |lucy|4| 3| 2|
6.2 迁移文件
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
$table->integer('state')->default(1);
$table->integer('p1');
$table->integer('p2');
$table->integer('p3');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
$table->dropColumn('state');
$table->dropColumn('p1');
$table->dropColumn('p2');
$table->dropColumn('p3');
});
}
6.3 上下级关系生成
public function guanzhu($event) {
$wxuser = ( new UserService( env('WX_ID') , env('WX_SEC') ) )->get($event->FromUserName);
// 第1种,此openid已存在,且state=1,不做处理, 如果,state=0,则state=1
// 第2种,openid不存在,且二维码有参数
// 第3种,openid不存在,且二维码场景为空,作一级代理商
$user = User::where('openid' , $event->FromUserName)->first();
//此用户目前处于正常关注状态
if( $user && $user->state==1 ) {
return;
}
// 此用户之前关注并取消关注,现在重新关注.
if( $user && $user->state==0 ) {
$user->state = 1;
} else { // 之前从未关注过
$user = new User();
$user->openid = $event->FromUserName;
$user->subtime = time();
$user->name = $wxuser->nickname;
// 如果场景二维码
if( $event->EventKey ) {
$puid = str_replace('qrscene_' , '' ,$event->EventKey);
$pu = DB::table('users')->where('uid',$puid)->first();
$user->p1 = $puid;
$user->p2 = $pu->p1;
$user->p3 = $pu->p2;
}
}
// 保存 用户
$user->save();
// 为用户生成场景二维码
$this->qr($user->uid);
return Message::make('text')->content('wechat 扩展,欢迎关注');
}

你可能感兴趣的:(wechat三级分销)