欢迎来到元素模板www.ys720.com,本站提供专业的织梦模板网站模板ASPCMS模板网站修改/网站仿站
当前位置:主页 > 程序教程 > ECSHOP教程 >
ECSHOP教程

ecshop自动分成二次开发实例

(元素模板) / 2019-09-27 14:21

ecshop自动分成功能在ecshop系统自带是没有的,如果我们需要对一单添加分成功能我们是需要进入二次开发的,下面小编来为各位介绍一个例子.

大概逻辑:

后台操作一个订单发货的时候进行自动分成,后台取消发货,退货,改为未发货的时候去掉自动分成部分.

核心代码:lib_common.php

//分成积分计算 
 
function fenchenjifen($usertype=3,$point){
 
 $affiliate = unserialize($GLOBALS['_CFG']['affiliate']); 
 
if($usertype==3){   //采购                          
 
                if ($affiliate['config']['level_register_up']) 
 
        { 
 
            $affiliate['config']['level_register_up'] /= 100; 
 
        } 
 
            $point_cg = round($affiliate['config']['level_register_up'] * intval($point), 0); 
 
            return $point_cg; 
 
        }    
 
if($usertype==1){//经销商 
 
        if ($affiliate['config']['level_money_all']) 
 
        { 
 
            $affiliate['config']['level_money_all'] /= 100; 
 
        } 
 
            $point_cg = round($affiliate['config']['level_money_all'] * intval($point), 0); 
 
            return $point_cg; 
 
        }    
 
if($usertype==2){//财务 
 
    if ($affiliate['config']['level_register_all']) 
 
        { 
 
            $affiliate['config']['level_register_all'] /= 100; 
 
        } 
 
            $point_cg = round($affiliate['config']['level_register_all'] * intval($point), 0); 
 
            return $point_cg; 
 
        }  



 
   
/** 
 
*  
 
* @param <a href="/tags.php/undefined/" target="_blank">undefined</a> $order  订单信息 
 
* @param undefined $buyuser 购买者信息 
 
* @param undefined $integral 计算积分 
 
* $type = 1 增加  $type=-1 撤销 
 
* 分成log状态99 
 
*/ 
 
function fun_fencheng_change($order,$buyuser,$integral=array(),$type=1){//店铺分成计算 
 
    if(intval($order['parent_shopid'])==0) return false; 
 
    if(!is_array($buyuser)) return false; 
 
       
 
    $order_id=$order['order_id']; 
 
    $separate_by=99; 
 
    switch($buyuser['usertype']){ 
 
        case '0'://购买者类型 
 
         $row = $GLOBALS['db']->getRow("SELECT * from " . $GLOBALS['ecs']->table('users') . " u ". 
 
                    " WHERE u.shopid  =".$order['parent_shopid']." and u.usertype=1" 
 
                );//获取pid 
 
           
 
            $up_uid = $row['user_id'];           
 
            if(!emptyempty($up_uid) && $up_uid > 0) 
 
            { 
 
                $money=$point=0;     
 
                $point= fenchenjifen(1,$integral['custom_points']);  
 
                           
 
               // $info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $point); 
 
                $info="订单".$order['order_sn']."分成获得积分:".$point; 
 
                log_account_change($up_uid, $money, 0, ($type)*$point, ($type)*$point, $info); 
 
                //var_dump($info);   
 
                if($type==1){            
 
                   
 
                write_affiliate_log1($order_id, $up_uid, $row['user_name'], $money, $point, $separate_by); 
 
                }else{ 
 
                    rollback_affiliate_log($order_id); 
 
                } 
 
                $orderupdate['is_separate']=$type==1?$separate_by:0; 
 
                 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), 
 
        $orderupdate, 'UPDATE', "order_id = '$order_id'"); 
 
            } 
 
        break; 
 
        case '3': 
 
        $row = $GLOBALS['db']->getAll("SELECT u.shopid,u.user_id,u.usertype, u.user_name FROM " . $GLOBALS['ecs']->table('users') . " u ". 
 
                    " WHERE u.shopid= ".$order['parent_shopid']." and u.usertype in (1,2)"); 
 
                    <a href="/tags.php/foreach/" target="_blank">foreach</a>($row as $val){ // 经销商和财务获得分成 
 
                        if($val['usertype']==1){ 
 
                            $pointf = fenchenjifen(1,$integral['custom_points']);    
 
                            } 
 
                        if($val['usertype']==2){ 
 
                            $pointf = fenchenjifen(2,$integral['custom_points']);    
 
                            }    
 
                            $up_uid = $val['user_id']; 
 
                            //$info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $pointf); 
 
                            $info="订单".$order['order_sn']."分成获得积分:".$pointf; 
 
                log_account_change($up_uid, $money, 0, ($type)*$pointf, ($type)*$pointf, $info); 
 
                   
 
                if($type==1){            
 
                      write_affiliate_log1($order_id, $up_uid, $val['user_name'], $money, $pointf, $separate_by); 
 
                }else{ 
 
                    rollback_affiliate_log($order_id); 
 
                } 
 
                 $orderupdate['is_separate']=$type==1?$separate_by:0; 
 
                 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), 
 
        $orderupdate, 'UPDATE', "order_id = '$order_id'");       
 
                    } 
 
           
 
        break; 
 
    } 
 
    return true; 
 

 
   
 
/** 
 
*  
 
* @param undefined $oid 
 
* @param undefined $uid 
 
* @param undefined $username 
 
* @param undefined $money 
 
* @param undefined $point 
 
* @param undefined $separate_by 
 
* 写入订单分成 log 
 
*/ 
 
function write_affiliate_log1($oid, $uid, $username, $money, $point, $separate_by) 
 

 
    $time = gmtime(); 
 
    $sql = "INSERT INTO " . $GLOBALS['ecs']->table('affiliate_log') . "( order_id, user_id, user_name, time, money, point, separate_type)". 
 
                                                              " VALUES ( '$oid', '$uid', '$username', '$time', '$money', '$point', $separate_by)"; 
 
    if ($oid) 
 
    { 
 
        $GLOBALS['db']->query($sql); 
 
    } 
 
}  
 
//撤销订单分成 
 
function rollback_affiliate_log($order_id,$falg=-2){ 
//phpfensi.com 
      $sql = "UPDATE " . $GLOBALS['ecs']->table('affiliate_log') . 
 
               " SET separate_type = '$falg'" . 
 
               " WHERE order_id = '$order_id'"; 
 
         $GLOBALS['db']->query($sql); 
 

需要注意的点:

后台发货程序在admin/order.php 需要修改的地方有:发货 866行,取消发货 1035行 改为未发货 3961行 退货4132行.

本代码只计算分成部分,自己下单部分另外.

这个代码是按照店铺ID分成,多商户的,为ecshop二次开发版,无法用于原版.

调用分成:fun_fencheng_change($order,$user,$integral,1);

取消分成:fun_fencheng_change($order,$user,$integral,-1);

Copyright @ 2013-2019 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com