开发者社区> php的小菜鸟> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

商城分销简单思路

简介: 三级分销执行分销规则往往都是用户确认收货时候,所以分销的方法最好也是在确认收货的方法里面。 代码如下: //这个方法需要传递一个变量(订单号),作用在下面代码体现 function fenxiao($orderid){ //因为是三级分销,所以有三个等级比例,同理,如果两级分销就会有两个。
+关注继续查看

三级分销执行分销规则往往都是用户确认收货时候,所以分销的方法最好也是在确认收货的方法里面。

代码如下:

//这个方法需要传递一个变量(订单号),作用在下面代码体现
function fenxiao($orderid){
        //因为是三级分销,所以有三个等级比例,同理,如果两级分销就会有两个。
        //查询数据库设置的比例
        $fenxiao = db('sys_fenxiao_bili')->where('id=1')->find();
        $bili[1] =  $fenxiao['level_1'];
        $bili[2] =  $fenxiao['level_2'];
        $bili[3] =  $fenxiao['level_3'];

        //通过订单号,获得购买者的ID(buyer_id)
        $order = $this->getDetail($orderid);
         //$pid 就是购买者ID
        $pid = $order['buyer_id'];、

        //实例化会员的流水账户,因为要写log日志。
        $member = new MemberAccount();

        //这里是循环遍历
        foreach ($bili as $k=>$v){
             //重点!!!
            //数据库里面有用户ID(uid)和用户的上级ID(pid)
            //db('sys_user')->where('uid='.$pid)->value('pid');  这句话就是查询他的上级pid,然后赋值为PID  
            //接着foreach循环查uid等于查出来的pid的值,以此类推。
           $pid = db('sys_user')->where('uid='.$pid)->value('pid');

           if($pid){
               if($order['fenxiao_money']>0){
                  //计算分销佣金
                   $money = $order['fenxiao_money']*$v/100;
                   //写入日志
                   $member->addMemberAccountData(0, 2, $pid, '1', $money, 8, $orderid, $k.'代返利');
               }
           }
        }
    }

上面的代码没有考虑返利时候会员级别有高有低的情况,并且不能一直追查上线,下面是修改的

   /*
     * 分销方法
     * zheng
     * */
    public function fenxiao($orderid)
    {

        //订单号查order_id
        // $orderid = db('ns_order')->where('order_no',$order_no)->value('order_id');
        //每个商品的级别价格
        $gid = db('ns_order_goods')->where('order_id',$orderid)->select();

        /**************************************************员工价格*/
        $staff = 0;
        foreach($gid as $k => $gg){

            //获得订单里面商品的ID   $gg['goods_id'];
            //获取数量
            $num = $gg['num'];
            //1,查员工价格
            $jgs = db('ns_goods_sku')->where('goods_id',json_decode($gg['goods_id']))->value('price_staff');
            $jg = $jgs * $num;
            $cc = $jg + $staff;
            $staff = $cc;
        }
//        echo $staff;
        /**************************************************代理价格*/
        $agent = 0;
        foreach($gid as $ag){
            //数量
            $num = $ag['num'];
            //查代理的价格
            $dl = db('ns_goods_sku')->where('goods_id',json_decode($ag['goods_id']))->value('price_agent');
            $dls = $dl * $num;
            $cc = $dls + $agent;
            $agent = $cc;
//            $agent += db('ns_goods_sku')->where('goods_id',json_decode($ag['goods_id']))->value('price_agent');
        }
//        dump($agent);
//        echo $agent;

        /*********************************************会员价格*/
        $vp = 0;
        foreach($gid as $vip)
        {
            //数量
            $num = $vip['num'];
            //查会员的价格
            $hy = db('ns_goods_sku')->where('goods_id',json_decode($vip['goods_id']))->value('price_vip');
            $hys = $hy * $num;
            $cc = $hys + $vp;
            $vp = $cc;
//            $vp += db('ns_goods_sku')->where('goods_id',json_decode($vip['goods_id']))->value('price_vip');
        }

        /*************************************************游客价格*/
        $p = 0;
        foreach($gid as $pr)
        {
            //数量
            $num = $pr['num'];
            //查游客的价格
            $yk = db('ns_goods_sku')->where('goods_id',json_decode($pr['goods_id']))->value('price');
            $yks = $yk * $num;
            $cc = $yks + $p;
            $p = $cc;
//            $p += db('ns_goods_sku')->where('goods_id',json_decode($pr['goods_id']))->value('price');
        }
//        echo $p;

        //通过orderid查用户ID
        $uid = db('ns_order')->where('order_id',$orderid)->value('buyer_id');

        //获取购买者level
        $u_level = db('ns_member')->where('uid',$uid)->value('member_level');    //
        $maxlevel = 0;      //初始最大级别
        for($i = 0; $i<100; $i++)
        {
            file_put_contents('./logs/'.$maxlevel,'1.txt'.PHP_EOL,FILE_APPEND);
            //查看等级 47游客  50会员  51代理  52员工
            $level = db('ns_member')->where('uid',$uid)->value('member_level');   //购买者等级  47   51
            if($level > $maxlevel){
                $maxlevel = $level;                                                 //maxlevel
            }
            //查购买用户的上级
            $pid = db('sys_user')->where('uid',$uid)->value('top');              //购买者上级ID
            //上级的级别
            $le = db('ns_member')->where('uid',$pid)->value('member_level');  //购买者上级等级   51    50


            if ($pid==0 || $pid == ''){
                break;
            }else{
                $uid = $pid;
            }
            //记录上级的最大值
//            $maxlevel = max($level,$le);

            if($le > $maxlevel)
            {
                $maxlevel = $le;                                                     //maxlevel

                $money =  $this->suan($level,$le,$staff,$agent,$vp,$p);
                if($money == 0)
                {

                    continue;

                }
                if($money == 100)
                {
                    break;
                }
                //执行返金币操作
                //判断用户余额
                $balance = db('ns_member_account')->where('uid',$pid)->value('balance');
                if(empty($balance)){
                    // $money=-$money;
                    $datas = [
                        'uid' => $pid,
                        'shop_id' => '0',
                        'point' => '0',
                        'balance' => $money,
                        'coin' => 0,
                        'member_cunsum' => '0',
                        'member_sum_point' => '0',
                        'dx_point' => '0'
                    ];
                    db('ns_member_account')->insert($datas);
                    //写入ns_member_account_records(会员流水账)记录表
                    $data = [
                        'uid' => $pid,
                        'shop_id' => '0',
                        'account_type' => '2',
                        'sign' => '1',
                        'number' => $money,
                        'from_type' => '11',  //在数据库添加上
                        'data_id' => $orderid,
                        'text' => '下级购买商品获得奖励',
                        'create_time' => date("Y-m-d H:i:s", time())

                    ];
                    db('ns_member_account_records')->insert($data);


                }else{
                    //更改用户余额
                    db('ns_member_account')->where('uid',$pid)->setInc('balance', $money);
                    //写入ns_member_account_records(会员流水账)记录表
                    $data = [
                        'uid' => $pid,
                        'shop_id' => '0',
                        'account_type' => '2',
                        'sign' => '1',
                        'number' => $money,
                        'from_type' => '11',  //在数据库添加上
                        'data_id' => $orderid,
                        'text' => '下级购买商品获得奖励',
                        'create_time' => date("Y-m-d H:i:s", time())

                    ];
                    db('ns_member_account_records')->insert($data);


                }
            }
        }

    }

    public function suan($a,$b,$staff,$agent,$vp,$p)
    {
        //$staff;//员工    $agent;代理  $vp;会员   $p;   youke

        if($a == 47 ){
            if($b == 47){
                return 0;
            }
            if($b == 50){
                return $p - $vp;
            }
            if($b == 51){
                return  $p - $agent ;
            }
            if($b == 52){
                return $p - $staff;
            }
        }
        if($a == 50){
            if($b == 47){
                return 0;
            }
            if($b == 50){
                return 0;
            }
            if($b == 51){
                return   $vp - $agent;
            }
            if($b == 52){
                return $vp - $staff;
            }
        }
        if($a == 51){
            if($b == 47){
                return 0;
            }
            if($b == 50){
                return 0;
            }
            if($b == 51){
                return 0;
            }
            if($b == 52){
                return $agent - $staff;
            }
        }
        if($a == 52){
            return 100;
        }

    }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
点阵---点亮一个点(内含硬件设计+软件编程+思路)
点阵---点亮一个点(内含硬件设计+软件编程+思路)
8 0
小程序软件开发商城小程序开发方式
小程序软件开发商城小程序开发方式
87 0
小程序三级分销商城开发
小程序三级分销系统开发,小程序商城,小程序分销商城,分销,返佣,返利,返现,分销、全返、分红。O2O、C2B、F2C、B2B、C2N、C2C等微商城、App、手机网页、PC商城、小程序定制开发
3169 0
小程序分销商城开发功能
电商小程序,商城小程序,卖货小程序,供应商入驻小程序平台,小程序系统,软件,平台,功能,搭建,开发软件定制开发
2449 0
布局方案的思路整理
之前根据网易前端微专业的课程,写了博客 水平居中 方案 垂直居中 方案 水平居中和垂直居中 方案   在最后,老师总结了『解决方案』提出的思路 比如说用到的 display : flex display:table display: inline-block display : table-cell vertical-align:middle justify-content: center 这样的一些属性 和 值,他的特性是什么? ① 一定要对这些特性非常掌握。
845 0
一个紧急查询的改进思路
今天下午有一个紧急需求,是辅助业务部门做一个紧急查询,既然说紧急查询,那么肯定业务上需要加急处理,那么很快就需要找到我们DBA来帮忙了。 需求的情况是,需要根据某一个用户的标识(比如手机号)来定位对应用户的id,可能同一个身份证号,可以注册多个不同的id。
615 0
分享一下前几天学到的项目开发思路
我本来有个微小的习惯就是一月鼓捣一篇博文出来.但是眼看这个月要触底了,我觉得再不写这个时间的连续性就被我打断了,不太好. 于是朕强行装逼,弄出这一篇文章. 阅读前提是你认同PHP是最好的语言(我当然不认同,我为什么要认同,哈哈).
947 0
一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式
 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h>   void main(void) {     int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };     for (int
1090 0
编程困难没思路,我差到哪儿了?
【来信】 老师您好!  我是一名计算机专业大二的学生,我现在在做一系列c语言竞赛一些容易的题目,可是我发现我碰到的问题会很没有思路,不知道方向,看见网上的很多同学都能够解决,而我却不能,我不知道自己差到哪了,我不知道怎么办才好,都有很多中学生的水平都比我这个大学生的水平要高,我真的不知道,那些未上大学就已经在编程方面的同学就很牛的同学是怎么做的,我感觉计算机这条路走的好难!【我的回复】  编程
1247 0
+关注
php的小菜鸟
热爱编程,忠于开源的小码农
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《淘宝推荐业务介绍》
立即下载
外卖广告架构实践
立即下载
淘宝商家应用-新场景、新机会、新生态
立即下载