首頁 php教程 php手册 ecshop自动分成二次开发实例

ecshop自动分成二次开发实例

May 22, 2016 pm 06:38 PM
foreach undefined

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

大概逻辑:

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

核心代码:lib_common.php

//分成积分计算

<?php
function fenchenjifen($usertype = 3, $point) {
    $affiliate = unserialize($GLOBALS[&#39;_CFG&#39;][&#39;affiliate&#39;]);
    if ($usertype == 3) { //采购
        if ($affiliate[&#39;config&#39;][&#39;level_register_up&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_register_up&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_register_up&#39;] * intval($point) , 0);
        return $point_cg;
    }
    if ($usertype == 1) { //经销商
        if ($affiliate[&#39;config&#39;][&#39;level_money_all&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_money_all&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_money_all&#39;] * intval($point) , 0);
        return $point_cg;
    }
    if ($usertype == 2) { //财务
        if ($affiliate[&#39;config&#39;][&#39;level_register_all&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_register_all&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_register_all&#39;] * intval($point) , 0);
        return $point_cg;
    }
}
/**
 *
 * @param undefined $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[&#39;parent_shopid&#39;]) == 0) return false;
    if (!is_array($buyuser)) return false;
    $order_id = $order[&#39;order_id&#39;];
    $separate_by = 99;
    switch ($buyuser[&#39;usertype&#39;]) {
        case &#39;0&#39;: //购买者类型
            $row = $GLOBALS[&#39;db&#39;]->getRow("SELECT * from " . $GLOBALS[&#39;ecs&#39;]->table(&#39;users&#39;) . " u " . " WHERE u.shopid  =" . $order[&#39;parent_shopid&#39;] . " and u.usertype=1"); //获取pid
            $up_uid = $row[&#39;user_id&#39;];
            if (!empty($up_uid) && $up_uid > 0) {
                $money = $point = 0;
                $point = fenchenjifen(1, $integral[&#39;custom_points&#39;]);
                // $info = sprintf($GLOBALS[&#39;_LANG&#39;][&#39;separate_info&#39;], $order[&#39;order_sn&#39;], $money, $point);
                $info = "订单" . $order[&#39;order_sn&#39;] . "分成获得积分:" . $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[&#39;user_name&#39;], $money, $point, $separate_by);
                } else {
                    rollback_affiliate_log($order_id);
                }
                $orderupdate[&#39;is_separate&#39;] = $type == 1 ? $separate_by : 0;
                $GLOBALS[&#39;db&#39;]->autoExecute($GLOBALS[&#39;ecs&#39;]->table(&#39;order_info&#39;) , $orderupdate, &#39;UPDATE&#39;, "order_id = &#39;$order_id&#39;");
            }
            break;
        case &#39;3&#39;:
            $row = $GLOBALS[&#39;db&#39;]->getAll("SELECT u.shopid,u.user_id,u.usertype, u.user_name FROM " . $GLOBALS[&#39;ecs&#39;]->table(&#39;users&#39;) . " u " . " WHERE u.shopid= " . $order[&#39;parent_shopid&#39;] . " and u.usertype in (1,2)");
            foreach ($row as $val) { // 经销商和财务获得分成
                if ($val[&#39;usertype&#39;] == 1) {
                    $pointf = fenchenjifen(1, $integral[&#39;custom_points&#39;]);
                }
                if ($val[&#39;usertype&#39;] == 2) {
                    $pointf = fenchenjifen(2, $integral[&#39;custom_points&#39;]);
                }
                $up_uid = $val[&#39;user_id&#39;];
                //$info = sprintf($GLOBALS[&#39;_LANG&#39;][&#39;separate_info&#39;], $order[&#39;order_sn&#39;], $money, $pointf);
                $info = "订单" . $order[&#39;order_sn&#39;] . "分成获得积分:" . $pointf;
                log_account_change($up_uid, $money, 0, ($type) * $pointf, ($type) * $pointf, $info);
                if ($type == 1) {
                    write_affiliate_log1($order_id, $up_uid, $val[&#39;user_name&#39;], $money, $pointf, $separate_by);
                } else {
                    rollback_affiliate_log($order_id);
                }
                $orderupdate[&#39;is_separate&#39;] = $type == 1 ? $separate_by : 0;
                $GLOBALS[&#39;db&#39;]->autoExecute($GLOBALS[&#39;ecs&#39;]->table(&#39;order_info&#39;) , $orderupdate, &#39;UPDATE&#39;, "order_id = &#39;$order_id&#39;");
            }
            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[&#39;ecs&#39;]->table(&#39;affiliate_log&#39;) . "( order_id, user_id, user_name, time, money, point, separate_type)" . " VALUES ( &#39;$oid&#39;, &#39;$uid&#39;, &#39;$username&#39;, &#39;$time&#39;, &#39;$money&#39;, &#39;$point&#39;, $separate_by)";
    if ($oid) {
        $GLOBALS[&#39;db&#39;]->query($sql);
    }
}
//撤销订单分成
function rollback_affiliate_log($order_id, $falg = - 2) {
    $sql = "UPDATE " . $GLOBALS[&#39;ecs&#39;]->table(&#39;affiliate_log&#39;) . " SET separate_type = &#39;$falg&#39;" . " WHERE order_id = &#39;$order_id&#39;";
    $GLOBALS[&#39;db&#39;]->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);


永久地址:

转载随意~请带上教程地址吧^^

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的區別多態差異(foreach底層就是Iterator)Iterator是一個介面類型,他不關心集合或數組的類型;for和foreach都需要先知道集合的類型,甚至是集合內元素的類型; 1.為啥說foreach底層就是Iterator寫的程式碼:反編譯程式碼:二、foreach與iterator時remove的差別先來看阿里java開發手冊但1的時候不會報錯,2的時候就會報錯(java. util.ConcurrentModificationException)首

php如何判斷foreach循環到第幾個 php如何判斷foreach循環到第幾個 Jul 10, 2023 pm 02:18 PM

php判斷foreach循環到第幾個的步驟:1、創建一個「$fruits」的數組;2、創建一個計數器變數「$counter」初始值為0;3、使用「foreach」循環遍歷數組,並在循環體中增加計數器變數的值,再輸出每個元素和它們的索引;4、在「foreach」循環體外輸出計數器變數的值,以確認循環到了第幾個元素。

PHP Notice: Undefined property: 的解決方法 PHP Notice: Undefined property: 的解決方法 Jun 22, 2023 pm 02:48 PM

在使用PHP編寫程式碼時,我們可能會遇到「Notice:Undefinedproperty」這個錯誤提示。這個錯誤提示意味著我們正在存取一個未定義的屬性,通常是因為該屬性在程式碼中尚未被初始化。那麼,該如何解決這個問題呢?以下是幾種可能的解決方法:初始化屬性這是解決問題的最簡單方法。在程式碼中明確地初始化屬性,可以確保它在使用前已經被定義。例如:class

Vue中的TypeError: Cannot read property '$XXX' of undefined,該如何處理? Vue中的TypeError: Cannot read property '$XXX' of undefined,該如何處理? Nov 25, 2023 pm 12:14 PM

如果你在使用Vue.js進行開發時,經常遇到「TypeError:Cannotreadproperty'$XXX'ofundefined」的錯誤提示,那麼該如何處理呢?本文將介紹這個錯誤的原因以及如何解決。問題的原因在使用Vue.js的時候,我們常常會用this來呼叫Vue元件的方法,例如:exportdefault{data()

PHP傳回一個鍵值翻轉後的陣列 PHP傳回一個鍵值翻轉後的陣列 Mar 21, 2024 pm 02:10 PM

這篇文章將為大家詳細講解有關PHP返回一個鍵值翻轉後的數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉數組鍵值翻轉是一種對數組進行的操作,它將數組中的鍵和值進行交換,產生一個新的數組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉:array_flip()函數:array_flip()函數專門用於鍵值翻轉操作。它接收一個數組作為參數,並傳回一個新的數組,其中鍵和值已交換。 $original_array=[

undefined和null是什麼意思 undefined和null是什麼意思 Nov 20, 2023 pm 02:39 PM

在JavaScript 中,undefined和null都代表著「無」的概念:1、undefined 表示一個未初始化的變數或一個不存在的屬性,當宣告了一個變數但沒有對其賦值時,這個變數的值就是undefined ,當存取物件中不存在的屬性時,傳回的值也是undefined;2、null表示一個空的物件引用,在某些情況下,可以將物件的引用設為null,以便釋放其佔用的記憶體。

undefined是什麼 undefined是什麼 Jul 31, 2023 pm 02:28 PM

undefined是代表一個值或變數不存在或未定義的狀態。它可以作為預設值來判斷一個變數是否已經被賦值,也可以用來設定預設參數值。儘管在不同的程式語言中,undefined可能具有不同的意義和用法,但理解undefined的概念可以幫助我們更好地理解和編寫程式。

如何解決 golang 中的 'undefined: path.Join” 錯誤? 如何解決 golang 中的 'undefined: path.Join” 錯誤? Jun 24, 2023 pm 01:12 PM

在Go語言中,path套件是處理檔案路徑的重要工具之一。其中path.Join()函數可以將多個路徑組合成一個完整的路徑。但是,有時你會遇到「undefined:path.Join」的錯誤訊息,該怎麼辦呢?以下是幾個常見的解決方法:檢查import語句首先,你需要確認自己已經正確import了path套件。在Go語言中,匯入包時可

See all articles